【问题标题】:http static handler resource base pathhttp静态处理程序资源基本路径
【发布时间】:2016-12-02 03:12:27
【问题描述】:

我在 mule 项目中的 src/main/resources 下有一个 html 文件。如何在 http 静态资源处理程序的资源基础路径字段中提及 html 文件相对于我的项目目录的相对路径以呈现 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

【问题讨论】:

    标签: mule mule-studio


    【解决方案1】:

    您的 ${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

    【讨论】:

    • 这是否可以使用 http 静态处理程序实现?
    • 我不知道您所说的“http 静态处理程序”是什么意思。假设您的意思是为每个单独的文件编写单独的 http 侦听器,例如针对 /HelloWorld.html、/HelloWorld1.html、/HelloWorld2.html 等请求的单独侦听器 - 是的,可以做到。这将是雇用大量开发人员的好理由;)
    • 我的意思是这样的
    • 我的意思是一样的。在这种情况下,每个文件都需要一个。在我的示例中,所有文件都需要一个。
    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 2013-10-04
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2012-06-30
    相关资源
    最近更新 更多