2009-10-07 2 views
1

서블릿에서 서버의 일부 파일에 액세스해야합니다. 그들은 내 개발 컴퓨터와 배포 서버에서 다른 경로를 가지고 있습니다. 일부 구성 파일을 어딘가에 (예 : capistrano 배포 shared dir) 어딘가에 넣고 싶습니다. 그래서 응용 프로그램에서 읽을 수 있습니다. 또는 응용 프로그램 서버 또는 그와 비슷한 일부 속성을 설정할 수 있습니다. Tomcat, Jetty 또는 Glassfish를 사용할 수 있습니다.Java EE 서블릿에 대한 일부 구성 파일을 사용하는 방법은 무엇입니까?

현재 로컬 컴퓨터의 구성으로 WEB-INF에서 구성 파일을 만들었습니다. 서버에 .war를 복사하는 배포 스크립트는 server config 파일을 안에 넣어서 war 파일을 수정합니다. 그것은 작동하지만 너무 좋지 않다. 서버의 경로가 변경되면 로컬 파일을 변경하고 응용 프로그램을 다시 배포해야한다.

더 좋은 해결책을 제안 할 수 있습니까?

답변

2

몇 가지 유사한 질문이 여기에 있습니다. This은 내가 찾은 것 중 하나입니다.

어쨌든 위의 답변에서이 link이 도움이 될 수 있습니다.

옵션의 요약은 다음과 같습니다 당신이 데이터베이스가있는 경우

  • 는,이 옵션을 저장합니다.
  • JNDI를 사용하여 등록 정보를 직접 저장하거나 구성 파일의 경로에 저장할 수도 있습니다.
  • 환경 변수를 사용하여 구성 파일의 경로를 저장할 수 있습니다. 이 XML과 같은 비 속성 자원 인 경우 데이터베이스에 은 확실히 옵션 항상은 아니지만 특별히 가능하다 저장 특성/XML 구성 -
1

이렇게하는 일반적인 방법은 서블릿 컨테이너 내에서 종속성을 구성하고 JNDI을 통해 노출시키는 것입니다. 귀하의 경우, 경로로 문자열을 노출하는 것만으로도 충분할 것입니다.

JNDI tutorialTomcat's JNDI docs으로 시작하는 것이 좋습니다. JNDI는 Spring IOC 컨테이너를 사용할 경우 Spring과 잘 통합된다.

1

나는 kgiannakakis에 동의하지만, 몇 가지 제한이뿐만 아니라 에있다. - JNDI 조회가 성능이 이고 xml도 저장할 수 없습니다. - 동일한 서버에 응용 프로그램을 여러 개 복사 한 경우 환경 변수를 사용할 수 없습니다. - 위의 모든 MyClass.getResourceAsStream()

같은 뭔가를 사용할 수 없습니다.

위의 해결 방법이 정상이면 공유 라이브러리 개념을 사용할 수 있습니다. 위에서 언급 한 위의 응용 프로그램 서버와 어떻게 작동하는지 잘 모르지만 아래에 주어진 것은 Geronimo, WASCE, IBM Websphere에 대한 링크입니다. 개념은 배포 중에 EAR에 대한 추가 클래스 경로를 지정한다는 개념입니다.

http://cwiki.apache.org/GMOxDOC21/configuring-geronimo-eclipse-plugin-to-publish-maven-dependencies-as-shared-library.html

WASCE 2.1 제로니모.0 http://publib.boulder.ibm.com/wasce/V2.1.0/en/shared-library.html

IBM 웹 스피어 http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rxml_library.html

관련 문제