使用OSGI在金融领域项目或实时应用程序中

时间:2018-03-08 14:18:04

标签: osgi osgi-bundle

OSGI提供即时捆绑更新。在多人游戏项目中,您有多个套接字连接及其相关功能。会有这么多的套接字连接,并且将会有如此多的支付请求,就像金融项目一样。

我只想要快速捆绑更新的好处。如果我有两个模块,一个用于套接字连接及其相关功能和其他事务模块。如果我正在更新事务模块包。它不会影响我的要求。因为JVM不得不重新加载jar。我们可以在这种情况下使用OSGI,如果不是在什么样的应用程序中,我们可以使用OSGI。

1 个答案:

答案 0 :(得分:2)

让我以更抽象的方式表达你的问题。让我们假设您的通信模块使用OSGi服务与事务模块进行通信。

因此,您在两个捆绑包之间存在服务依赖关系,并希望调用捆绑包不受更新的影响。

如果使用普通声明性服务执行此操作,则在捆绑包A中的组件中具有强制服务引用。更新捆绑包B时,它将首先停止,然后更新,然后再次启动。所以服务消失然后又回来了。使用简单的强制引用,捆绑A中的组件也将停止,然后再次启动。在这种情况下,您必须短时间关闭连接,这可能会导致连接丢失。

您可以做的是没有强制性参考,而是可选的动态参考。在这种情况下,捆绑包A中的组件保持不变,但必须处理该服务,因为短时间内不存在。也许你可以简单地阻止,直到服务回来。在这种情况下,您可以提供不间断的处理,但是您正在阻止线程。

因此,更好的解决方案可能是使用jms服务器在bundle之间进行通信。如果你想要它小,jms服务器可以嵌入并纯粹在内存中(ActiveMQ可以做到这一点)。在这种情况下,您可以不间断地更新捆绑包B.

在这两种情况下,它都可以帮助使用具有延续支持的Web服务器来避免阻塞。