2011-04-01 3 views
0

디렉토리 경로를 허용하고 File(path);을 통해로드하는 라이브러리를 사용해야합니다. Tomcat 웹 응용 프로그램 컨텍스트의 경로는 무엇입니까?자바 파일 API를 통해 Tomcat에서 리소스를로드하는 방법

난 항상 클래스 경로에서 작동하지만,이 API는 정말 통해 생각하지 않습니다 ...

나는 바람둥이에서 자바 실행 컨텍스트 경험이없는, 그러나 그것은 나에게 이런 일을하고 나쁜 생각을 보인다

System.getProperty("catalina.base") + "webapps/app/WEB-INF/classes/profiles" 

tomcat은 응용 프로그램 컨텍스트의 리소스에 대해 Java 실행 (AKA $ PWD) 경로를 제공합니까?

답변

4

웹 응용 프로그램 상대 경로를 절대 디스크 파일 시스템 경로로 변환하려면 ServletContext#getRealPath()을 사용하십시오. 귀하의 예를 감안할 때, 다음이 수행해야이 전쟁이 확대되는 것을 필요로

String path = getServletContext().getRealPath("/WEB-INF/classes/profiles"); 
File file = new File(path); 
// ... 

주를, 그렇지 않으면 null를 반환합니다. 기본적으로 Tomcat은 WAR를 확장하지만 일부 다른 servletcontainers/config는 WAR를 확장하지 않습니다. 이식성과 관련하여이를 명심하십시오.

+0

@Vladimir Dyuzhev : 답변의 마지막 단락과 OP가 Tomcat을 사용한다는 사실을 놓쳤습니까? 아니면 유니콘을 좋아 하셨나요? :) – BalusC

+0

나는 그들이 지역적으로 정확할 때라도 전세계의 잘못된 대답을 보는 것을 후회합니다. :) –

+0

@erica : 블라디미르 (Vladimir)가 주석을 삭제했지만, 이유는 모든 컨테이너가 WAR를 확장하는 것이 아니라 Tomas에서 구성 할 수 있다는 것입니다. 이는 필자의 대답의 마지막 단락에서 다루었습니다. 매우 어리석은 예 : – BalusC

2

파일 시스템에 응용 프로그램 자원이 필요하지 않으므로 컨텍스트 경로 접근 방식의 검색이 잘못되었습니다.

환경에 따라 경로를 정의해야하는 외부 구성 (속성 파일 또는 DB)을 제공해야합니다.

  1. System.properties : -Dmy.configuration =/가정/바람둥이/my.properties
  2. 시스템 환경 : MY_CONFIGURATION =/가정/바람둥이/my.properties 구성 검색의

    순서 (권장)

  3. 기본값 : ./my.properties (일반적으로 Tomcat의 경우 bin 폴더이지만 보장되지는 않음)
  4. 불만을 제기하고 불만을 제기합니다.
+0

알아두면 좋지만이 앱은 Tomcat – lisak

+1

에게만 공개됩니다. 너를 뒤쫓아 오는 사람들이 당신의 혼란을 치사하게하십시오. –

관련 문제