【发布时间】:2013-08-07 06:00:06
【问题描述】:
我正在尝试从一些自定义 OSGI 平台迁移到 Glassfish,以便于维护并更快地实施新的捆绑包。
我在迁移时遇到了一个问题。所以我有 BundleA 和 BundleB,它们应该通过服务引用进行通信。参考的接口在 BundleC 上,它是自定义平台上的主要包。如果没有 BundleC,什么都不会启动,包括平台本身。所以我把接口放在了BundleC上。 BundleB 具有实现接口的类,并在启动时将其注册为服务,而 BundleA 使用该服务。
在迁移到 Glassfish 时,由于它已经提供了合适的 OSGI 平台,我不需要旧的 BundleC。那么在删除 BundleC 之后,除了导出和导入类或包含一个用于启动的包之外,如何提供适当的包间通信?我希望 BundleA 和 BundleB “几乎”独立,而不是耦合。
这种情况有什么解决办法吗?或者我仍然需要那个 BundleC 作为某种中间件?
【问题讨论】: