Mule ESB提供CSS等静态文件

时间:2016-04-29 03:07:17

标签: mule mule-studio

在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])/]

2 个答案:

答案 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 / ,指向任何以定义开头但也可以使用其他任何内容扩展的路径。