2010-11-22 2 views
3

\WEB-INF\etc\config에 구성 파일이있는 웹 응용 프로그램이 있습니다. 이 폴더는 몇 개의 속성 파일과 하나의 XML을 포함합니다. 하나의 속성 파일에 xml 경로를 설정해야합니다. 이 파일을 설정하면 서비스 시작 중에 객체를 만드는 데 사용되며이 객체는 파일에서 속성을 읽습니다. 따라서이 객체는 속성 파일에 설명 된 모든 파일의 경로를 알아야합니다. 같은 dir에 속성 파일과 xml 파일이있는 경우 어떻게 속성 파일에서 올바른 경로를 설명 할 수 있습니까?파일에 대한 WEB-INF 경로

감사합니다.

답변

5

정상적인 방법은 런타임 클래스 경로에 파일을 저장하거나 런타임 경로 경로에 루트 경로를 추가하는 것입니다. 그러면 ClassLoader#getResource() 또는 InputStream에 의해 ClassLoader#getResourceAsStream()으로 리소스를 얻을 수 있습니다.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
InputStream input = classLoader.getResourceAsStream("filename.xml"); 

속성 파일에 지정해야하는 것은 XML 파일의 정규화 된 이름 (클래스 경로 위치)입니다.

당신이 정말로 그런 디스크 파일 시스템 경로와 하구에서 주장하는 경우에, 당신은 웹 콘텐츠 다음 리소스를 얻기 위해 ServletContext#getResource() 또는 ServletContext#getResourceAsStream()을 사용 (/WEB-INF이 위치하는 것을 특징으로 폴더)에서 상대 경로를 지정해야합니다. 그러나 XML 파일을 사용하는 코드에 ServletContext 종속성이 추가됩니다.

+0

감사합니다. 작성한 내용과 솔루션은 다음과 같습니다. – jitm

+0

ServletContext를 사용하여 런타임에서 충돌 경로 및 구문 분석에 추가하고 두 번째 솔루션은 시작 루트 폴더에서 XML 파일로 전체 경로를 속성 파일에 추가합니다. 나는 두 번째 변종을 선택했다. 감사. – jitm