如何从java应用程序中使用OSGi

时间:2010-05-03 07:51:31

标签: java osgi equinox

我是OSGi的新人,但很有意思。 是否可以在osgi bundle和java应用程序之间进行交互?如果有可能,怎么样? 谢谢!

上下文是我有一个很大的Java SE应用程序(作者是另一个程序员),有许多依赖项。首先,我的目标是添加新功能和第二次更改架构。我将尝试使用OSGi,但我不想两次编写代码,因此我想编写新代码作为bundle。但是使用旧应用程序中的这个新功能。

3 个答案:

答案 0 :(得分:10)

答案 1 :(得分:1)

我认为OSGi是一种结构化技术。您可以使用它来定义应用程序的组件结构。因此,您的所有应用程序实际上都是OSGi捆绑包的集合。因此,互动不是问题,只是您的应用程序的不同位以正常方式进行交互。

[在评论澄清之后编辑。]

您有一个基本的决定:您的OSGi代码是在与原始进程相同的进程中执行还是在单独的进程中执行?

分离意味着可以自由地构建新代码,利用OSGi,但代价是进程间通信复杂性和性能开销。您最终可能会对现有应用程序进行重大更改,以便以某种形式支持远程处理。我不认为这是一个很好的方法,除非您的OSGi代码碰巧是某种可重用的服务,也许其他远程客户端会使用它。

如果在同一个过程中,我会说你需要咬紧牙关并说这将是一个OSGi应用程序。获取现有应用并使其在OSGi中运行所需的工作量不必过多。

假设您将现有应用程序视为一个巨大的OSGi包?初始化会有一些工作,但其余的“只是工作”吗?如果您是第一步,那么现有应用程序的真正重新架构和模块化将被推迟。然后,您只需公开新模块所需的接口,并在必要时使用新模块提供的服务。通过构建依赖项,您可以立即获得OSGi的好处。

答案 2 :(得分:0)