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

在金融领域项目或实时应用程序中使用OSGI,osgi,osgi-bundle,Osgi,Osgi Bundle,OSGI提供即时捆绑包更新。在多人游戏项目中,您有多个套接字连接及其相关功能。将会有如此多的套接字连接,将会有如此多的付款请求,就像在金融项目中一样 我只想享受即时捆绑更新的好处。如果我有两个模块,一个用于套接字连接及其相关功能,另一个用于事务模块。如果我正在更新事务模块包。这不会影响我的要求吗。因为JVM必须重新加载jar。在这种情况下,我们可以使用OSGI吗?如果不是在什么样的应用程序中,我们可以使用OSGI。让我用一种更抽象的方式来表述您的问题。假设您的通信模块使用OSGi服务与事务模块对

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


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

让我用一种更抽象的方式来表述您的问题。假设您的通信模块使用OSGi服务与事务模块对话

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

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

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

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


在这两种情况下,使用支持延续的web服务器可以避免阻塞。

让我用一种更抽象的方式来阐述您的问题。假设您的通信模块使用OSGi服务与事务模块对话

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

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

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

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

在这两种情况下,都可以使用支持延续的web服务器来避免阻塞