2010-07-08 4 views
0

웹 서비스를 구축 중이며이를 배포하기 위해 war 파일로 패키징하고 있습니다. 현재 모든 설정 파일 (.properties와 .xml)은 내 .war 파일에 패키지되어 있습니다. 이 파일 중 일부는 개별 설치마다 수정해야하므로이 기능은 작동하지 않습니다. 일부 서블릿 컨테이너는 .war 파일을 그대로 남겨 두어 설정 파일을 결코 쉽게 수정할 수 없다는 것을 알고 있습니다. 내 질문은 :이 외부 구성 파일을 .war 파일을 배포하는 가장 좋은 방법은 무엇입니까? 구성 파일을 .war 파일과 별도로 제공하고 클래스 경로에있는 디렉토리에 배치해야한다고 생각합니다. Tomcat에서 기본 디렉토리 설정을 사용하여 이러한 파일을 삭제할 수 있으며 웹 서비스가 많은 문제없이 찾을 수 있습니까?수정할 수있는 속성 파일로 war 파일 배포

아마도이 설정에 war 파일을 사용하면 안됩니다. 어쩌면 나는 단지 zip 파일 (war 파일과 같은 내용)을 제공해야하고 배치는 단순히 zapp를 webapps 디렉토리로 추출하는 것일까?

답변

0

내가 저장 구성 톰캣에있는 기본 디렉토리를 모르는, 같은 문제를 해결하기 위해 내 시도되었습니다

1 - 이동 DB를에 구성 및 제공 스크립트 또는 웹 페이지 값을 수정할 수 있습니다.
2 - 전쟁을 전개 할 스크립트가 있어야합니다. 이 스크립트는 사용자 디렉토리의 구성을 web.xml 또는 다른 배치 된 구성 파일로 병합합니다.
3 - webapps는 먼저 사용자 디렉토리에서 구성을 찾은 다음 을 찾은 다음 전쟁에서 배포 한 구성 파일을 찾습니다.

최소 즐겨 찾기는 3입니다. 모든 웹 응용 프로그램에서 두 곳의 구성을 확인해야하며 두 개의 서로 다른 xml 파일이 서로 다른 값으로 서버에 저장되며 어느 것이 사용되는지 항상 명확하지는 않습니다.

다음 즐겨 찾기는 2입니다. 웹 응용 프로그램은 여러 구성 파일에 대한 지식 없이도 작성 될 수 있지만 누군가가 스크립트를 사용하는 대신 Tomcat 관리자로부터 배포 할 때 문제가 발생합니다.

즐겨 찾기는 1입니다. 대부분의 경우에 적합합니다. 문제는 DB가 없거나 DB에 연결하는 방법을 구성하려는 경우입니다.

+0

전 전쟁 파일 배포를 완전히 피하고 대신 응용 프로그램을 설치하기 위해 압축을 풀어야 할 zip을 사용하려고합니다. 이것은이 두통을 완전히 피합니다. – Dennis

+0

zip을 압축 해제하면 업그레이드가 수행 될 때 구성을 덮어 쓰지 못하게하는 방법은 무엇입니까? – GregB

+0

맞습니다. 문제가 해결되지 않습니다. 그러나 최소한 파일을 수동으로 편집하고 이전 파일을 저장할 수 있습니다.이상적은 아니지만 배포시 구성을 제어 할 필요가 거의없는 상태에서 war 파일의 모든 내용을 숨기는 것보다 낫습니다. – Dennis

0

모든 웹 응용 프로그램에서 볼 수있는 파일은 문제가되지 않으므로 $CATALINA_HOME/lib으로 지정할 수 있습니다.

0

하나의 솔루션은 배포 파일이 ServletContext.getRealpath() 메소드를 사용하여 속성 파일을 수정하는 것입니다. 실제 경로를 얻으려면 배포 된 서버에서 파일의 경로를 의미 한 다음 해당 파일을 수정하여 파일을 수정합니다. 원래 파일이 아닌 컨테이너에만 있습니다. 따라서 중요한 수정이라면 백업해야합니다. 따라서 이미 배치 된 컨테이너에서 파일을 수정하고 있으므로 war 파일을 재배포 할 필요가 없습니다.

이 솔루션은 웹 페이지 폴더에있는 파일을 java 클래스에서도 편집 할 수 있습니다.

자세한 설명이나 방법을 원한다면 알려주세요.

관련 문제