过去10年来,我们一直在使用Spring作为依赖注入构建两个应用程序套件。我们还使用spring-batch和spring-amqp。我们现在正在寻求转向OSGI,以便我们的单片应用程序可以分成捆绑包,这样我们就可以更加灵活。这两个套件是Web应用程序,并部署为两个单独的war文件。我们希望使用Apache Karaf作为我们的OSGI运行时。
Spring-DM已经死了,似乎我们必须将一切转换为使用Blueprint进行依赖注入。
我的问题是我们如何逐步完成这项工作?将所有这些转换成一次几乎是不可能的。似乎一个捆绑包应该仍然能够使用Spring DI并拥有它自己的应用程序上下文,只要我们负责在bundle激活器中公开我们想要的服务注册表的任何服务,但我不确定是否存在是一种我们会像交易管理一样失去的魔力。
对此的任何指导都将非常感激。
答案 0 :(得分:2)
您可能需要考虑使问题显示更大并切换到DS而不是Blueprint ...为了真正利用OSGi模型,DS在所有方面都远远优于Blueprint 。实际上,在第一个障碍之后,你会取得更多进步,你的收益会更高。虽然Blueprint在OSGi上提供了Spring,但它从来没有'得到'OSGi。
对于策略,将您的Spring应用程序保持为单个捆绑包并逐渐移除。即大象的方法。
OSGi提供的最大收益可归纳如下:
确保真正了解OSGi模型的服务。您可能需要查看利用OSGi的OSGi enRoute。
答案 1 :(得分:0)
我建议你看看blueprint-maven-plugin。它允许使用CDI和JEE annoations的子集来定义注入以及事务和持久性。该插件在构建时创建蓝图xml,然后由karaf执行。最大的优点是这些注释也得到了春天的支持。因此,您可以使用spring过渡并并行发布到生产中。
我在这里有一个完整的例子Annotation based blueprint and JPA。
使用这个插件我在一个中型项目的同时开发和发布时迁移了它。如果您在使用插件时需要进一步的建议,我当然可以提供帮助。