2014-12-05 3 views
-1

WildFly AS를 사용하여 JSF + Spring 프레임 워크에서 Java EE 애플리케이션을 생성하고 싶습니다. 뜨거운 요구 사항 중 하나는 다음과 같습니다. 플러그 앤 플레이 모듈 이것은 응용 프로그램을 업데이트하거나 응용 프로그램에 새 모듈을 추가하는 경우를 의미합니다. (당연히 bean.xml, web.xml, pojo 클래스, jars 등 업데이트) 내 * .war 파일을 재배포하지 않고 Wildfly AS를 다시 시작하지 않고 변경 사항이 발생합니다.플러그 앤 플레이 Java EE 애플리케이션

답변

3

몇 가지 이유로 인해 복잡한 요구 사항입니다. DB 스키마/엔티티 모델에 대한 변경은 어떻게 처리 할 것인가? 업그레이드시 진행중인 세션을 어떻게 처리하고 '이전'코드를 활발하게 사용하고 있습니까? 컨테이너 관리 코드, 배포시에만 컨테이너에서 관리하는 코드 (예 : 새 EJB 등)에 대한 변경 사항은 어떻게 처리합니까?

이러한 요구 사항 중 일부를 달성하기 위해 프로덕션에서 사용한 한 가지 방법은 응용 프로그램 버전 관리와 전체 스키마 하위 호환성을 사용하여 롤링 업데이트를 수행하는 것입니다. 이는 프록시 서버에 의해 처리되는 클러스터 환경에서 이루어지며, 이전 버전의 응용 프로그램을 사용하여 활성 세션을 완료 할 때까지 계속 진행하고 새 세션이 새 버전의 코드가 포함 된 서버/컨텍스트로 이동하도록 할 수 있습니다. 따라서 새로운 버전의 코드가 포함 된 WAR을 배포하고 모든 이전 세션이 만료되거나 만료되면 이전 버전을 배포 취소해야합니다. 이렇게하려면 새 버전이 변경 사항을 도입 할 때 모델의 두 개의 동시 버전에 대한 작업을 완벽하게 지원하려면 코드의 부담을 감수해야합니다. 이것은 사소한 부담이 아닙니다. 또한 세션을 적절하게 라우팅하기 위해 추가 인프라의 부담을 감수해야합니다.

JRebel과 같은 제품을 사용하면 개발/테스트주기를 단축한다는 아이디어와 함께 코드 (심지어 EJB와 같은 것)의 핫 배포를 수행 할 수 있지만 개발 환경 외부에서 사용되는 것을 보지 못했습니다. 또한 이전 버전/모델에서 시작된 활성 세션을 처리해야합니다.

관련 문제