我在 Java EE 环境中工作,其中每个应用程序都在自己的 war 文件中。在每个应用程序 war 文件的 WEB-INF/lib 中都有一个由所有应用程序共享的公共 jar。这个常见的 jar 包含几个 Singleton,可以从代码中的许多点访问。由于战争文件的边界,每个应用程序都有自己的单例实例。这就是我们今天的操作方式,因为我们想在每个应用程序中以不同的方式配置一些单例。
现在我们正在转向一个 OSGi 环境,因为每个包都有自己的类加载器,所以这个解决方案将不再工作,所以如果我尝试从包“appA.jar”或从包访问驻留在包“common.jar”中的 MySingleton bundle "appB.jar" 我会得到相同的实例。
请记住,我“想要”每个捆绑包有一个不同的单例实例。(听起来很讽刺)
现在我意识到理想的解决方案是修复代码不依赖于那些单例,但是由于时间紧迫,我想知道你们是否可以建议某种迁移解决方案,让我可以使用捆绑范围的单例所以每个包都可以配置。