2016-12-02 64 views
1

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

/用户/ XX /的git /项目/ .mule /应用 /集成/ src目录/主/资源/

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

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

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

回答

2

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

所以,它运行时会在另一个地方运行。你应该在这个新的地方拥有所有必要的文件。简单起见 - 使用资源而不是文件。让应用程序服务器携带文件的位置。

下面是简单的例子,其示出了从目录公共任何静态文件(资源) enter image description here

这里是代码

<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 /主/资源的任何文件/ public是资源并通过depryment切换到应用程序服务器将显示为html页面。像

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

+0

这是可以使用HTTP静态处理程序? – user94538

+0

我不知道你的意思是“http静态处理程序”。假设你的意思是为每个单独的文件编写独立的HTTP监听器,例如/HelloWorld.html,/HelloWorld1.html,/HelloWorld2.html等单独的监听器 - 是的,它可以完成。这将是雇用开发人员的重要原因;) – Alex

+0

我的意思是这样的 user94538