我们正在解开一个经典的遗留单片 EAR 封装的 Java EE 应用程序。我们(最复杂的)组件布线模式如下:组件 A“需要”接口 X,而组件 B 和 C (... N) 各自“提供”接口 X。我们的要求是打包和部署 A、B、C和 X 分开独立,以最大限度地减少停机时间并最大限度地减少业务影响。
因此,我们需要必要的稳健性以允许在运行时删除和添加(重新部署)接口的提供者(B,C),而无需重新部署接口的消费者(A),也不需要重新启动服务器。该解决方案将在 Wildfly 8 上运行,但只要它们在 Wildfly 8 上运行,就可以使用其他技术。
我们已经使用 JBoss-OSGI 和 Weld-OSGI 实现了一个 POC,它满足了我们的所有要求,并为我们提供了一个极好的迁移路径。然而,在 Wildfly 8 Alpha 3 中,JBoss-OSGI 已从默认发行版中移除。这让我们认为我们应该探索更符合 Wildfly 背后人们的想法的替代方案。
因此,问题是,在 Wildfly 8 上,对于满足我们要求的模块间服务注入的 OSGI 替代方案是什么?
为了预算、简单性、性能开销和公司政策,我们不得不消除以下内容:
1. 远程 EJB
2. Web 服务
3. JSON/Rest
4. SCA
请注意,这不是要求就 OSGI 的可行性进行辩论,也不是要求评估或比较不同的解决方案。我只是在寻找任何符合我们标准且不基于 OSGI 的解决方案。