我想要实现的目标
使用netbeans模块化系统为我们准备应用程序,因为我们使用声明服务通过apache felix在OSGi中实现模块。这是模块设置:
模块C通过以下代码安装模块:
BundleContext context = FrameworkUtil.getBundle(class).getBundleContext();
Bundle tcp = context.installBundle("file:Location");
tcp.start();
一切安装和启动没有错误。但是,声明的引用不受绑定到服务。
有关如何将所有内容组合在一起的更具体,我将代码添加到github https://github.com/jonaslagoni/server。请记住将文件中的行:module C,dk.sdu.ace.dp.Controller,第27-28行更改为模块B和A的位置。
到目前为止我尝试过的
额外的问题
声明服务是否应该在通过bundlecontext安装和启动时自动将提供程序与引用绑定?
这种构建应用程序的方式是否可行,或者我们应该采用另一种方式吗?如果是这样的话?
您的DS引用使用可选基数而不使用greedy
policy option。 (出于历史向后兼容性原因,reluctant
策略选项是默认选项。)
使用reluctant
时,如果稍后注册了额外/更好的服务,例如提供服务的软件包在服务于服务的软件包之后开始,则引用将不会被反弹。有了greedy
,参考将会反弹。