我要实现的目标
使用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中。记住要更改文件中的行:模块C,dk.sdu.ace.dp.Controller,行27-28到模块B和A的位置。
到目前为止我尝试过的事情
其他问题
声明性服务在通过bundlecontext安装并启动时是否应自动将提供者与引用绑定?
这种构建应用程序的方式是否可行,还是应该采用另一种方式?如果是这样?
答案 0 :(得分:1)
您的DS参考正在使用可选基数,而不使用greedy
policy option。 (出于历史记录向后兼容的原因,{reluctant
策略选项是默认选项。)
使用reluctant
,当以后注册其他/更好的服务(例如提供服务的捆绑包在消费捆绑包之后开始提供服务)时,引用将不会反弹。使用greedy
,引用将被反弹。