【发布时间】:2014-09-24 02:48:51
【问题描述】:
我有一个需要两个数据库连接的 RCP 3.7 应用程序,每个数据库的代码都在一个单独的包中。以前数据库启动是在 Activator.start() 方法中完成的。我对代码进行了大量重构,将数据库启动移动到两个声明式服务中。这实现了打破捆绑包之间的紧密耦合和过度包暴露的目标(几乎所有内容都被导出)。
我现在面临的挑战是这两个服务启动不够快,工作台加载并且我遇到线程冲突。我将两个服务都设置为立即=真。捆绑包的启动顺序是 eclipse.osgi 为 -1(默认),equinox.ds 和 equinox.common 为 2,core.runtime 为默认值。我已经尝试为我的捆绑包添加起始级别,但它没有帮助,所以删除它们。
关于如何确保数据库在服务返回之前启动有什么想法或建议?
【问题讨论】:
-
您是否尝试过在清单中设置
Bundle-ActivationPolicy: lazy?看看this post 使用声明式服务的延迟捆绑激活。 -
感谢您的建议。我已经将该选项设置为惰性。很好的链接,我现在知道为什么设置它!
标签: eclipse osgi declarative-services