OSGI Embedded Equinox - 用于访问未在osgi框架中实例化的pojos的Bundle

时间:2012-01-10 16:09:10

标签: osgi equinox

我有一个服务器端应用程序,并希望嵌入一个osgi框架进行动态捆绑加载 假设我想公开一个QuoteImpl实现IQuote(实例化为服务器容器引导程序/ Spring的一部分),供不同的Bundles使用。

Q1。是否有一种将服务器应用程序实例暴露给Bundles的简洁方法? (顺便说一句,因为遗留的是不可能将服务器代码变成捆绑:)并且不想让整个应用程序成为可能。

尝试通过服务和捆绑进行暴露以投射到IQuote中。不确定我做得好但由于未解决的编译问题而失败,因为IQuote驻留在核心应用程序项目而不是捆绑项目中。任何想法?

2 个答案:

答案 0 :(得分:3)

是的,这样做的方法是使用服务。 “host”应用程序将发布服务,OSGi中的bundle将以正常方式使用该服务。

使这项工作的关键是服务API(即包含IQuote的包)必须由主机应用程序通过系统包导出导出。您可以通过在创建嵌入式OSGi框架时设置org.osgi.framework.system.packages.extra属性来控制此操作。我在这个主题上写了blog post,可以帮助你入门(查找标题“公开应用程序包”)。

您声明存在编译问题。要解决这些问题,有必要了解如何构建项目和构建系统。

答案 1 :(得分:1)

这就是我在Java类中嵌入Equinox OSGi运行时的方法。我想你也可以这样做。 https://github.com/sarxos/equinox-launcher/blob/master/src/main/java/com/github/sarxos/equinox/Launcher.java