【问题标题】:Use of OSGI In financial domain projects or realtime applicationsOSGI 在金融领域项目或实时应用程序中的使用
【发布时间】:2018-03-08 23:16:19
【问题描述】:

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

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

【问题讨论】:

    标签: osgi osgi-bundle


    【解决方案1】:

    让我以更抽象的方式阐述您的问题。让我们假设您的通信模块使用 OSGi 服务与事务模块通信。

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

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

    您可以做的是没有强制引用而是可选的动态引用。在这种情况下,您在捆绑包 A 中的组件会保持正常运行,但必须处理服务在短时间内不存在的情况。也许您可以简单地阻止,直到服务恢复。在这种情况下,您可以提供不间断的处理,但您正在阻塞线程。

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

    在这两种情况下,使用具有持续支持的 Web 服务器有助于避免阻塞。

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多