在Mule ESB项目中,我尝试使用静态资源处理程序结合http:listener来提供HTML文件以外的文件。我有一个包含表单的简单HTML文件,它指向同一目录中的CSS文件。如果我转到http://localhost:8000,则会提供index.html文件。但是.css文件未被提供(404),即使它与HTML文件放在同一目录中。放在同一目录中的其他HTML文件也无法提供服务。
请注意,这适用于http-inbound-endpoint。
<http:inbound-endpoint exchange-pattern="request-response" host="${server.address}" port="${server.port}" doc:name="HTTP"/>
新的httpListener方法是否未准备好进入黄金时段?
以下是相关代码:
表单HTML(/index.html):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="http://localhost:8081/uploadform.css">
</head>
<body>
<form action="http://localhost:8081/submitform" enctype="multipart/form-data" method="post">
<p>
Type a file title:<br>
<input type="text" name="title" size="30">
</p>
<p>
Please specify a file to upload:<br>
<input type="file" name="datafile" size="40">
</p>
<div>
<input type="submit" value="Send">
</div>
</form>
</body>
相关的MULE代码:
<http:listener-config name="HTTP_Listener_Configuration" host="${server.address}" port="${server.port}" doc:name="HTTP Listener Configuration"/>
<flow name="HTTP_FORM" initialState="started">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" allowedMethods="GET" doc:name="HTTP"/>
<http:static-resource-handler resourceBase="${app.home}/web" defaultFile="index.html" doc:name="HTTP Static Resource Handler"/>
</flow>
以下是出现的相关错误消息:
找不到请求的侦听器:(GET)/uploadform.css 可用的听众是:[([post])/ submitform /,([get])/]
答案 0 :(得分:3)
您需要在http:listener
中使用通配符,例如path="/*"
示例骡子代码:
<http:listener-config name="HTTP_Listener_Configuration" post="${server.address}" port="${server.port}" doc:name="HTTP Listener Configuration"/>
<flow name="HTTP_FORM" initialState="started">
<http:listener config-ref="HTTP_Listener_Configuration" path="/*" allowedMethods="GET" doc:name="HTTP"/>
<http:static-resource-handler resourceBase="${app.home}/web" defaultFile="index.html" doc:name="HTTP Static Resource Handler"/>
</flow>
答案 1 :(得分:2)
似乎这样做的方法是使用通配符。来自current documentation:
您还可以使用*作为通配符路径,以侦听对指定基本路径中的任何路径所做的所有传入请求。您还可以指定以结尾的部分路径,例如mypath / ,指向任何以定义开头但也可以使用其他任何内容扩展的路径。