2012-10-12 3 views
0

Java 웹 응용 프로그램을 사용하면 편리하게 실행할 수 있습니다. jar 파일을 tomcat의 webapps 폴더로 드롭하거나 tomcat 관리자를 사용하여 업로드하는 것이 좋습니다. jar 파일 이름이 foo123.jar 인 경우 웹 응용 프로그램은 http : // < 호스트 > : 8080/foo123 /에서 곧 액세스 할 수 있습니다. 그러나 대부분의 경우 구성에 문제가 있습니다. 데이터를 데이터베이스에 저장하는 것이 좋지만 데이터베이스 연결 매개 변수는 어디에 저장할 수 있습니까? 일반적으로 server.xml이나 web.xml 또는 다른 구성 파일을 수정하여 적용해야하지만 이러한 경우 자동 배포를 사용하지 못합니다.자바 웹 응용 프로그램에서 데이터베이스 연결 매개 변수 유지

"사용하기 쉬운"웹 응용 프로그램은 "설치"화면과 같이 첫 번째 실행에서 필요한 구성을 요청한 다음 서블릿 컨테이너가 다시 시작될 때까지 기다려야합니다. 물론 데이터베이스 연결 매개 변수의 경우 데이터베이스에 저장하는 것은 옵션이 아닙니다.

사양에 따라 서블릿 컨테이너는 웹 응용 프로그램이 쓰기 권한을 가진 디렉토리를 제공해야합니다. 그것은 사용하여 결정될 수있다

File tempDir = 
(File) session.getServletContext().getAttribute("javax.servlet.context.tempdir"); 

이 디렉토리의 내용은 내가 그것을 가지고 있다면 바로이는 서버를 다시 시작 후 비어 의미의 '서블릿 컨텍스트 라이프 사이클'에 바인딩됩니다. 그것이 사실이라면, 그것은 내 목적을 위해 사용될 수 없습니다.

아무도 모범 사례를 알고 있습니까? 나는 바퀴를 재발 명하고 싶지 않다.

더 나은 솔루션이 부족하여 다음과 같이 구현할 것입니다. 앞에서 설명한 쉬운 배포 방법을 사용하면 컨텍스트 경로가 jar 파일 이름에서 파생됩니다. 그래서 나는 이것을 데이터베이스 연결에도 사용하는 것을 상상할 수 있습니다. 간단히 말해서 : 웹 응용 프로그램 foo123이 localhost : 3306 (MySQL 기본 포트)에서 MySQL 연결을 찾고 사용자 이름 foo123 및 암호 foo123을 사용하여 연결할 수 있고 foo123이라는 스키마에 액세스 할 수있는 권한이있는 경우 항상 다시 시작할 때이를 사용합니다.

당신은 어떻게 생각합니까?

답변

1

context.xml 파일을 사용할 수 있습니다. 이렇게하면 서버별로 구성 파일을 저장할 수 있으므로 코드 자체에 정보를 저장할 필요가 없습니다.

This example 멋지게 정리 한 것 같습니다.

+0

첫 번째로 성공한 후에 "Tomcat 5.5와 Tomcat 6이 /conf/Standalone으로 context.xml 파일을 복사한다고합니다 [http://wiki.metawerx.net/wiki/Context.xml]라고합니다. 배포하고 응용 프로그램을 배포 취소하지 않으면 파일을 제거하거나 업데이트하지 마십시오. " 따라서 디렉토리 **는 Tomcat에 쓰기 가능해야하므로 ** 웹 응용 프로그램에 쓸 수 있어야합니다. 나머지 웹 컨테이너 (Glassfish, 다른 Tomcat 버전)도이 작업을 수행하면 남은 질문이 있습니다. 그 "Standalone"dir의 위치를 ​​파악하는 방법; 그리고 컨테이너가 war 파일을 디스크에 언팩하지 않는다고하더라도. – Paramaeleon

관련 문제