2012-12-21 10 views
2

다른 WAR가 포함 된 EAR이 있습니다. 프로젝트 구조는 다음과 같다 : 전쟁에서ear/war/jar에서 파일을 읽는 방법은 무엇입니까?

project.ear 
|-- lib 
|-- META-INF 
|-- project-web.war 
| |-- META-INF 
| |-- WEB-INF 
| | |-- classes 
| | | `-- com 
| | |   `-- example 
| | |    `-- services 
| | |     `-- ListPageService.class 
| | |-- lib 
| | |-- web.xml 
| | `-- weblogic.xml 
| `-- content.html 
`-- project-services.jar 

content.html 파일을 읽을 필요가 JAX-RS 클래스 ListPageService있다. 해당 파일에 어떻게 액세스합니까?

+0

을 말할 수있는 당신은 javax.ws.rs.core.Context

@Context ServletContext servletContext; 

주석 필드를 선언하여 JAX-RS 클래스의 ServletContext에 접근 할 수 있어야한다 ; 클래스 파일은 content.war/WEB-INF/classes에 있어야합니다. 그렇다면 전쟁 파일에서 content.html-exactact-? – Gimby

+0

파일 트리가 바뀌 었습니다. – Alex

답변

2

WAR 파일의 리소스를 가져 오는 일반적인 방법은 ServletContext.getResource 또는 getResourceAsStream입니다. 다음 요청 처리 방법에 당신이 당신의 나무가 정확하지

URL content = servletContext.getResource("/content.html"); 
// alternatively 
// InputStream content = servletContext.getResourceAsStream("/content.html"); 
2

편집 :이 답변은 이제 공식화 된 질문에 더 이상 적용되지 않습니다. 제안 된 메소드는 클래스 패스에서 리소스를 가져 오기 위해서만 작동합니다.

Class.getResourceAsStream 방법을 살펴보십시오. 클래스 경로에있는 파일에 액세스 할 수 있습니다.

+0

고맙지 만 다음 문제가 발생했습니다. getClass(). getResourceAsStream (".")을 실행하면 절대 경로는 C : \ Oracle \ middle \ user_projects \ domains \ base_domain \ servers \ AdminServer \ tmp입니다. \ _WL_user \ project-ear \ 7epkmz \ war \ WEB-INF \ lib \ _wl_cls_gen.jar에 있습니다. 이 항아리에는 원래 WAR의 정적 내용이없는 * .class 파일 만 포함되어 있습니다. 이견있는 사람? – Alex

+0

지정한 이름은 클래스의 위치를 ​​기준으로합니다. 이 이름은 /로 시작하면 무시 될 수 있습니다. 귀하의 예제에서 파일을 얻으려면 "/content.html"을 사용하십시오. – Henry

+0

웹 컨텐츠 자원은 클래스 경로에서 전혀 다루지 않습니다. 이 답변이 왜 4 개의 상향 음을 이미 얻었는지는 저를 넘어선 것입니다. – BalusC

관련 문제