war 파일이 Jetty
서버에 배포되기 전에 매번 Java 코드를 실행해야합니다. 내 필요성은, 내가 새로운 데이터베이스를 정리하고 배포하기 전에 몇 가지 레코드를 추가하는 Java 코드를 실행해야 할 때마다 새로운 전쟁이 필요합니다.배포 전에 Java 프로그램을 실행하는 방법
응용 프로그램 시작시 작성하지만 배포가 진행될 때 한 번만 처리 할 수 있습니다.
누구든지이 작업을 수행 할 수있는 방법을 제안 할 수 있습니까? 감사.
war 파일이 Jetty
서버에 배포되기 전에 매번 Java 코드를 실행해야합니다. 내 필요성은, 내가 새로운 데이터베이스를 정리하고 배포하기 전에 몇 가지 레코드를 추가하는 Java 코드를 실행해야 할 때마다 새로운 전쟁이 필요합니다.배포 전에 Java 프로그램을 실행하는 방법
응용 프로그램 시작시 작성하지만 배포가 진행될 때 한 번만 처리 할 수 있습니다.
누구든지이 작업을 수행 할 수있는 방법을 제안 할 수 있습니까? 감사.
이 작업을 수행하는 방법은 ContextListener에서 코드를 호출하는 것이지만 새로운 WAR 파일을 배포 할 때 코드를 한 번만 실행하려면 WAR 파일에 플래그를 넣는 것입니다.
if(file is present){
do something, call DB etc
delete(file)
}
하는 것입니다 또 다른 (어쩌면 청소기?) 방법 :
예를 들어, 당신은 그런 일을 할, 당신의 ContextListener의 코드에서 특정 이름으로 전쟁에서 빈 파일을 넣어 수 초기 값이 false 인 구성 등록 정보 파일에 다음을 입력하십시오.
initialDeploymentCodeExecuted=false
그런 다음 전체 파일 대신이 등록 정보를 확인하십시오. false 인 경우 실행되는 코드에서 true로 변경하십시오.
좋은 생각 pierre, 그건 이미 내 마음 속에 있었다. 배포주기에 추가하는 것과 같은 표준 방법을 찾고 있습니다. 보십시오 [여기에서] (http://wiki.eclipse.org/Jetty/Feature/Deployment_Manager). – vels4j
글쎄, 내가 아는 한 JEE 표준 방법이 없다. "WebappLifecycleListener"또는 이와 비슷한 것이 유용 할 것입니다. 그리고 저는 Tomcat 사용자입니다. 따라서 특정 제트기 특정 방법에 대해서도 알지 못합니다. 행운을 빕니다 ! –
가는 길. – vels4j
컨텍스트 리스너는 어떻습니까? contextInitialized() 방법에 db 정리 코드를 추가 할 수 있습니다.
타겟팅하려는 plaform을 언급하지 않았습니다. 예를 들어 리눅스라면 WAR를 RPM 패키지로 감쌀 수 있습니다. RPM (및 다른 패키지 설치 관리자)은 설치 전후에 스크립트를 실행할 수있는 기능을 제공합니다. 그것은 많은 노력과 같이 보일지도 모르지만, 일반적으로 설치 및 유지 보수의 용이성을 통해 다시 지불합니다. –
@ MarkO'Connor 귀하의 의견에 감사드립니다. 대상은 Windows와 Linux 모두입니다. 일반적으로 우리는 폴더 릴리즈를 사용하고 변경이 발생할 때마다 WAR 파일 만 바꿉니다. – vels4j