我们使用混合的OSGi和非OSGi环境。 因此,我们生成的所有JAR都是Bundles,以便在OSGi容器内部和外部实现部署和运行时。因此,我们所有的都是在没有任何OSGi API集成的情况下编写的,我们使用单个OSGi扩展程序包将所有服务注册为OSGi服务。
我想在OSGi容器内部和外部将系统连接在一起时使用单个DI解决方案(即相同的配置文件)。这相当有效地阻止了我使用简单的蓝图DI。
你会在这里推荐什么? 是否有针对此类情景收集的最佳做法?
答案 0 :(得分:4)
我建议查看pojosr
服务注册表,无需使用OSGi框架即可启用OSGi样式服务注册表程序。
我们的想法是创建一些东西,使服务和OSGi生命周期层的一部分在通常不具备的环境中可用。
这允许您使用正常的OSGi服务注册表和声明服务,甚至在官方OSGi框架之外,除非您需要的更多,而不是声明服务提供的内容
答案 1 :(得分:3)
有两种选择;
由于你可能正在运行多个JVM,并且有很多新的OSGi和传统,Camel的EIP可能非常合适。但是你可以随时开始使用Guice并稍后集成Camel。
无论你决定什么,最好确保构建的任何 Jars都包含一个OSGi清单。
答案 2 :(得分:2)
使用Spring。
它显然可以在OSGi之外工作,你可以使用Spring dm使其适应OSGi内部的工作。它只需要添加一个osgi上下文文件来将bean绑定到服务注册表或从服务注册表绑定。
我们已经在Eclipse RCP应用程序的多个项目中使用它多年。在此特定情况下,它也可用于在UI级别绑定事物。