2016-12-02 3 views
1

mule 프로젝트의 src/main/resources 아래에 html 파일이 있습니다. html 파일을 렌더링하는 HTTP 정적 리소스 처리기에 대한 리소스 기본 경로 필드의 내 프로젝트 디렉토리와 관련하여 html 파일의 상대 경로를 언급하는 방법. 나는 자원 기반에 ${app.home}/src/main/resources을 부여했지만 ${app.home}은/http 정적 처리기 리소스 기본 경로

/사용자/XX/자식/프로젝트/.mule/응용 프로그램 아래/통합/SRC/메인/자원과 같은 디렉토리를 가리키는

나는 그것이 .mule/apps 디렉토리에서 왜 보이는지 모르겠습니다.

내 html 파일은이 경로 아래에 있습니다.

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

답변

2

귀하의 $ 올바른 위치에 {app.home} 점. Anypoint Studio에서 사용자 환경이 아닌 응용 프로그램 서버에서 보관 (압축), 배포 및 실행되는 응용 프로그램을 실행한다는 사실을 잊지 마십시오.

그래서 실행하면 다른 곳에서 실행됩니다. 이 새 장소에 필요한 모든 파일이 있어야합니다. 쉽게 만들려면 파일이 아닌 리소스를 사용하십시오. 응용 프로그램 서버가 파일이있는 위치로 이동하게합니다. 여기

공개 디렉토리 행 (리소스)를 정적 파일을 도시 간단한 예이다 여기 enter image description here

이 예에서는 디렉토리 SRC/주/자원 하의 파일 코드

<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> 

인/public은 자원이며 deplyment를 통해 응용 프로그램 서버에 전달되며 html 페이지로 표시됩니다. 마찬가지로

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

+0

이것은 정적 핸들러를 사용하여 달성 할 수 있습니까? – user94538

+0

"http static handler"가 무슨 뜻인지 모르겠다. /HelloWorld.html, /HelloWorld1.html, /HelloWorld2.html과 같은 요청에 대해 별도의 리스너처럼 각 개별 파일에 대해 개별 http 수신기를 작성한다고 가정합니다. 예. 가능합니다. 그게 개발자의 군대를 고용하는 큰 원인이 될 것입니다;) – Alex

+0

나는이 user94538