2015-01-23 5 views
0

Tomcat 서버에서 실행중인 Java 응용 프로그램이 있습니다. 응용 프로그램은 xml 파일을 디렉토리에 읽고 쓸 필요가 있습니다. 파일이 같은 디렉토리에서 작성하고 읽을 수 있도록Tomcat의 Java 파일 경로

나는 사용하여 프로그램 일정

public static String getRelativePath() { 
    return new File("").getAbsolutePath(); 
} 

상수는 방법에 사용되는이 메소드를 호출

public static final String DICTIONARY_PATH = getRelativePath() + "/res/dictionaries/"; 

readFromFile(String language)writeToFile(Dictionary dictionary)

IntelliJ에서 실행되는 기본 메서드에서 이러한 메서드를 호출 할 때 (테스트 용) beautif ully를 실행하고 지정된 폴더에 파일을 읽고 씁니다. 파일이 난을 구현할 수있는 방법 tomcat/webapps/application/WEB-INF/classes/dictionaries

에있는 동안은 바람둥이의 tomcat/bin 폴더에서 찾고 있기 때문에

Tomcat 서버에서 실행중인 경우이 방법을 응용 프로그램에서 호출 할 때이 파일을 찾을 수 없습니다 메소드 getRelativePath()을 사용하여 IntelliJ에서 로컬로 Tomcat 서버에서 작동하도록합니다 (기본 메소드 호출을 통해)

+0

다른 문제를 설명 할 수도 있습니다. 예측할 수 없기 때문에 상대 경로를 사용하고 싶지는 않습니다. 항상 절대 경로를 원합니다. 다중 전개 환경을 지원하려면 서버 환경마다 절대 경로를 구성 할 수 있어야합니다. – Gimby

답변

1

tomcat/webapps/application/WEB-INF/classes/dictionaries을 나타내는 Java의 특성 파일을 사용할 수 있습니다. 이렇게하면 tomcat 디렉토리를 "실제 대상"으로 설정하는 데 도움이됩니다. 이 속성을 사용하면 항상 상대 경로를 사용할 수 있습니다. ..\..\..\C:\myprojects\ 테스트를 위해 자바 프로젝트로 이동하십시오. 또한 env 변수와 함께 사용하십시오. 항상 환경 변수를 설정하고 System.getenv(String name)을 사용하여 액세스 할 수 있습니다. http://crunchify.com/java-properties-file-how-to-read-config-properties-values-in-java/

소품 파일을 통해 일을하는 장점이 수업은 그대로 있다는 것입니다 -

경우 당신은 속성의 파일 설치 (아주 기본적인 일)에 대해 알고하지 않습니다. 속성 파일 만 변경하여 값을 가리 킵니다. 가능한 경우 OO 설계에서 파일 이름 및 구성을 하드 코딩하지 않아야합니다.

+0

속성 파일이나 환경 변수에 대한 경험이 없으므로이 경우 사용 방법에 대한 예제 또는 링크를 제공 할 수 있습니까? –

+0

@ LiamdeHaas 님이 도움을 주시면 편집되었습니다. :) – ha9u63ar

0

리스너 클래스를 사용하여 컨텍스트 매개 변수를 사용하는 것이 더 좋습니다. 그 경로를 컨텍스트 또는 서블릿 컨텍스트에 저장하면됩니다. 또는 서블릿 컨텍스트를 사용하여 상대 경로를 가져옵니다.