1

我有一个需要两个数据库连接的 RCP 3.7 应用程序,每个数据库的代码都在一个单独的包中。以前数据库启动是在 Activator.start() 方法中完成的。我对代码进行了大量重构,将数据库启动移动到两个声明式服务中。这实现了打破捆绑包之间的紧密耦合和过度包暴露的目标(几乎所有内容都被导出)。

我现在面临的挑战是这两个服务启动不够快,工作台加载并且我遇到线程冲突。我将两个服务都设置为立即=真。捆绑包的启动顺序是 eclipse.osgi 为 -1(默认),equinox.ds 和 equinox.common 为 2,core.runtime 为默认值。我已经尝试为我的捆绑包添加开始级别,但它没有帮助,所以删除它们。

关于如何确保数据库在服务返回之前启动的任何想法或建议?

4

1 回答 1

3

看起来您正在从 DS 激活线程中访问 SWT。请使用 Display.asyncExec 从其他线程访问 SWT 代码。请参阅 PlatformUI.getWorkbench 以访问显示。

于 2014-08-01T11:30:17.950 回答