각 응용 프로그램이 자체적 인 war 파일에있는 Java EE 환경에서 작업하고 있습니다. 각 응용 프로그램 war 파일의 WEB-INF/lib에는 모든 응용 프로그램에서 공유하는 공통 jar 파일이 있습니다. 이 공통 jar에는 코드의 여러 지점에서 액세스되는 여러 개의 Singleton이 포함되어 있습니다. war 파일 경계로 인해 각 응용 프로그램에는 자체 싱글 톤 인스턴스가 있습니다. 우리는 각 애플리케이션에서 서로 다른 싱글 톤을 다르게 구성하기를 원하기 때문에 현재 우리가 운영하는 방식이 있습니다.OSGI 환경에서 싱글 톤을위한 마이그레이션 솔루션
이제 각 번들마다 고유 한 클래스 로더가 있으므로이 솔루션이 더 이상 작동하지 않으므로 OSGi 환경에서 번들 "common.jar"번들 "appA"에있는 MySingleton에 액세스하려고하면이 솔루션이 더 이상 작동하지 않습니다. jar "또는 번들"appB.jar "에서 동일한 인스턴스를 가져옵니다.
번들 당 싱글 톤의 다른 인스턴스를 "원합니다"는 것을 기억하십시오. (소리가 나는 것과 같이 아이러니하게)
이제는 이상적인 해결책은 싱글 톤에 의존하지 말고 코드를 수정하는 것이지만, 빡빡한 스케줄로 인해 마이그레이션 솔루션을 제안 할 수 있는지 궁금합니다. 그렇게하면 번들 전체에 싱글 톤을 사용할 수있게되어 각각 번들 당 을 구성 할 수 있습니다.
옵션 2와 관련하여 OSGi는 war 파일로 작동합니까? OSGi 번들은 단순히 jar 파일이라고 생각했습니다. –
번들을 JAR 파일의 인스턴스로 제한하는 OSGi 스펙에는 아무 것도 없습니다. WAR 지원의 예는 Spring DM과 OPS4J를 참조하십시오. – SteveD