http 静态处理程序资源基本路径

http static handler resource base path

我在 mule 项目的 src/main/resources 下有一个 html 文件。如何在资源基本路径字段中提及 html 文件相对于我的项目目录的相对路径,以便 http 静态资源处理程序呈现 html 文件。我在资源库中给出了 ${app.home}/src/main/resources${app.home} 指向如下目录

/Users/xx/git/projects/.mule/apps/integration/src/main/resources/

我不确定为什么它会在 .mule/apps 目录下查找。

我的html文件在这个路径下。

/Users/xx/git/projects/integration/src/main/resources/app.html

您的 ${app.home} 指向正确的位置。不要忘记您 运行 应用程序已归档(压缩)、部署并 运行 在应用程序服务器上,这不是您在 Anypoint Studio 中的环境。

因此,当它 运行 出现时,它 运行 出现在另一个地方。您应该在这个新地方拥有所有必要的文件。为了简单起见 - 使用资源而不是文件。让应用服务器承载文件所在。

这是一个简单的例子,它显示了目录 public 中的任何静态文件(作为资源)

这是代码

<flow name="publicFilesHttpsFlow">
        <http:listener config-ref="HTTPS_listner" path="/StatusESB/public/*" doc:name="HTTP"/>
        <set-variable variableName="resourceName" value="#[message.inboundProperties['http.request.uri'].substring(18)]" doc:name="Variable"/>

        <set-payload value="#[Thread.currentThread().getContextClassLoader().getResourceAsStream(flowVars.resourceName)]" doc:name="Set Payload"/>
        </flow>

在此示例中,目录 src/main/resources/public 下的任何文件都是资源并通过部署分发到应用程序服务器,将显示为 html 页面。喜欢

https://localhost/StatusESB/public/HelloWorld.html