2016-12-02 97 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