我是OSGi的新用户,但很有趣。
osgi包和Java应用程序之间是否可以交互?如果可能,怎么办?
谢谢!

上下文是我有一个很大的Java SE应用程序(作者是另一个程序员),具有许多依赖性。首先,我的目标是添加新功能,其次是更改体系结构。我将尝试使用OSGi,但是我不想两次编写代码,因此我现在想将新代码打包成束。但是,请使用旧应用程序中的此新功能。

最佳答案

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

[在澄清评论后进行编辑。]

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

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

如果以相同的过程进行操作,那么我想说的是您需要咬一口,并说这将是一个OSGi应用程序。制作现有应用程序并使其在OSGi中运行的工作量无需过多。

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

关于java - 如何从Java应用程序使用OSGi,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2756784/

10-12 12:54
查看更多