2010-06-09 2 views
1

war 파일을 사용하여 응용 프로그램을 효율적으로 배포 할 수있는 방법에 대한 연구를하고 있습니다. 현재 내가하는 일은 릴리스가있을 때마다 war 파일을 전달하는 것입니다.war 파일의 개별 파일을 업데이트하는 방법

이것은 변경 사항이 아무리 작아도 응용 프로그램을 구성하는 모든 파일을 작성하고 제공해야 할 때마다 변경된다는 것을 의미합니다. 어쩌면 이것이 올바른 방법이 아니라고 생각합니다.

예를 들어 CSS 파일이 변경되면 모든 파일을 포함하는 war 파일을 다시 작성해야합니다. 여기에는 모든 * .java 파일을 다시 컴파일하는 것도 포함됩니다.

위 예제에서 css 파일만으로 war 파일을 빌드하여 Tomcat 서버에 배포하고 Tomcat에서 CSS 파일을 바꿀 수 있습니까?

답변

5

압축 해제 된 war 파일 만 배포 할 수 있습니다. 그런 다음 개별 파일을 업데이트 할 수 있습니다. 이를 위해 war 파일을 갖고 싶으면 "unpacked"디렉토리를 배치하십시오. tomcat을 사용하고 deploy 디렉토리를 보면, Tomcat이 무엇인지를 알 수 있습니다.

변경 사항이 적용되지 않을 수도 있습니다. CSS 파일과 이미지 및 앞뒤가 문제가되지 않지만 JSP, 템플릿 파일 등은 컴파일되고 캐싱되는 경향이 있으며 앱이 이러한 아티팩트를 대체하도록 설정 마법을해야합니다. 일반적으로 이것은 성능 비용으로 발생하며 클래스가 대체되었지만 메모리에서 해제되지 않은 경우 무시 무시한 PermGen 오류로 이어질 수 있습니다. 이렇게하는 경우 서버를 정상적으로 바운스하고 virtualvm 또는 jconsole 또는 유사한 도구를 사용하여 PermGen 메모리 영역을 주시하십시오.

+0

deploy 디렉토리에 대해 언급 할 때 "webapps"디렉토리 Tomcat을 의미합니까? PermGen 오류의 원인은 무엇입니까? 나는 당신이 새로운 것을 가진 수업을 대체한다면 그것은 대체 될 것이라고 생각했다. 하나의 파일 만있는 war 파일을 만들면 기존 폴더를 삭제할 수 있습니까? (나 자신을 시도해야한다!) – ziggy

+0

클래스는 영구적 인 세대로 옮겨 지는데, 이는 기본적으로 청소를 위해 스윕되지 않는다. 따라서 스왑 된 클래스는 PermGen에서 메모리를 해제하지 않습니다. 하나의 파일이있는 전쟁을 만들면 올바르게 기억하면 전체 폭발 된 폴더가 삭제됩니다. 파일을 제자리에 놓는 것이 훨씬 쉽습니다. 특정 파일이 전체 사이트 재배포를 유발한다고 생각합니다. 적어도 JBoss에서는이 작업을 수행합니다. –

+0

web.xml을 배포하려고하면 web.xml이 배포되면 다른 모든 것을 다시 배포해야합니다. – ziggy

관련 문제