전체 응용 프로그램을 중단하지 않고 이전 기능의 jar를 새로운 기능으로 대체하는 방법을 찾고 있습니다. 나는 이것에 대한 약간 (Unloading classes in java?, Dynamically loadable and unloadable application modules in Java - how?를) 검색 좀, 3 가능한 해결책을 발견 : 내 목적을 위해 너무 복잡 보인다Tomcat : Tomcat이 클래스를 내부적으로 언로드하는 방법은 무엇입니까?
- OSGI : 클래스 하역 내가이 강력한 사양에서 필요로하는 유일한 것입니다.
- 고유의 Classloader를 만들고, jars를 도움으로로드하며, jar - expose Classloader 인스턴스를 GC로 닫고 GC가로드 된 모든 jar와 함께이를 제거하므로 즉시 실행되지 않을 수도 있음을 의미합니다. .
- 물건 응용 프로그램 서버를 복사 :) 그게 내 질문의 목적입니다.
톰캣이 클래스 (전쟁)를 언로드하는 방법에 대한 설명이 있습니까? 신청서에 이것을 재사용 할 수 있습니까?
PS 나는이 이상한 생각이 내 머리에 와서이 게시물 작성했다 그냥 동안 :
- 우리가 항아리의 새로운 세트와 응용 프로그램의 다른 인스턴스를 시작하고 흐름 입력 및 출력 데이터를 전환 할 수있을 수를 새 것에서 오래된 것. 상태를 유지할 수있는 장소가 있으면 완전히 다시 시작하는 것보다 빠를 수 있습니다.
- 봄이 도움이 될 수 있습니까? 콩을 동적으로 등록 할 수는 있지만 다소 엉망인 해결책처럼 보이며 어쨌든 언로드 할 수 없습니다. 아마도 스프링 부트가 도움이 될까요?
OSGi는 많은 코너 케이스를 처리해야하므로 복잡해 보일 수 있습니다. 2 번이나 3 번 경로로 간다면 OSGi의 상당 부분을 다시 구현하게 될 것입니다 :-) –