2010-08-21 1 views
1

J2EE 프로젝트에서 응용 프로그램 수준 설정/구성 파일을 유지하는 방법에 대한 권장 사항이 있습니까? 로그 및 로컬 설정 파일에 써야하는 의존성이있는 웹 프로젝트가 있습니다. 어쨌든 로컬 디렉토리에 설정 파일을 저장하고 쓸 수 있습니까?웹 응용 프로그램에서 설정 파일 유지

[종속성의 일부는 다음과 같습니다 : 최대 절전 모드 및 gridgain, 그래서 그들은 로그를 많이 생산]

을 나는 것보다는 어렵지 코드 설정 파일의 위치.

답변

5

WEB-INF 폴더 아래에 구성 파일을 저장해야합니다. 디렉토리 /WEB-INF/config을 작성할 수 있습니다. 그들이 수업 경로에 있어야만한다면 /WEB-INF/classes. 이 방법으로 위치를 하드 코드하지 않고 응용 프로그램에서 잘 알려진 위치에 배치합니다.

/WEB-INF 안에 넣는 것이 중요하므로 브라우저에서 파일에 액세스 할 수 없습니다.


또 다른 방법은 그들이 webapps 디렉토리에 있지 그래서 당신이 당신의 구성 파일의 위치를 ​​지정 web.xml 구성에 매개 변수를 추가 할 수 있습니다. context-param을 추가하면됩니다. 예를 들어 :

<context-param> 
    <param-name>configuration</param-name> 
    <param-value>/var/myapp/config</param-value> 
</context-param> 

구성라는 이름의 서블릿 컨텍스트 초기화 매개 변수로 웹 응용 프로그램에 표시 될 것이다. 그런 다음 기본 경로로 사용하여 구성 파일을 읽을 수 있습니다 ( ServletContext에서 getInitParameter 메서드를 호출하여 값을 가져옵니다).

하지만이 설정 파일은 클래스 경로에서 필요하지 않습니다.

+0

웹 응용 프로그램을 다시 배포 할 때마다 로그가 손실됩니다. – BalusC

+0

그건 나를 괴롭히지 않습니다.로그는 Tomcat 로그 폴더로 이동합니다. [나를 괴롭히지 않습니다.] – monksy

+0

웹 -INF는 전쟁으로 컴파일 되었습니까 아니면 전쟁 외부입니까? – monksy

0

Soundlink와의 합의.

데이터베이스에 설정을 저장할 수도 있습니다. 서블릿이 시작되면 설정 데이터가 데이터베이스에서로드되어야합니다.

  • 프로 : 자바 EE 표준 없습니다 구성 파일을 관리 할 필요가 없습니다.
  • con : 서블릿이 시작된 후 작동 up.
+0

데이터베이스의 특정 테이블 집합이나 응용 프로그램의 데이터베이스가 필요하기 때문에이 솔루션이 마음에 들지 않습니다. 내가 작업하고있는 데이터베이스는 이미 상당히 큽니다. 파일을 설정하면 웹 응용 프로그램을 쉽게 관리 할 수 ​​있습니다. – monksy

2

구성 파일의 경로를 webapp의 클래스 경로에 추가하기 만하면됩니다. 이는 일반적인 접근 방법이며 많은 API는 클래스 경로에서 구성을로드하도록 설계되었습니다. 해당 파일을 수동으로로드하는 경우 ClassLoader#getResourceAsStream()을 사용하여 클래스 경로 자원 InputStream을 얻을 수 있습니다.

먼저 webapp 디렉토리 외부의 고정 경로를 만들어 구성 파일을 삭제합니다. /var/webapp/config. 그런 다음이 경로를 클래스 경로에 포함하도록 servletcontainer를 구성하십시오. Tomcat의 경우 /conf/catalina.properties 파일의 shared.loader 또는 common.loader 속성에서 지정할 수 있습니다.

+0

이렇게하면, 설치된 모든 웹 응용 프로그램에서 구성 파일을 볼 수 있습니다. webapp이 하나뿐이라면 괜찮습니다. 그렇지 않으면 문제가 될 수 있습니다. – Soundlink