独立于提供者的独立 JMS 应用程序

时间:2021-01-22 22:34:44

标签: java jms platform-independent

在 J2EE 容器内运行的应用程序可以使用 JMS,而无需了解底层 JMS 实现(例如,如果它使用 Solace,您可以改用 MQ,只需更改配置)。但是一个独立的应用程序,即一个不在 J2EE 容器中运行的应用程序呢?如何使其独立于 JMS 提供者?如果那不可能,你能接近多远?

1 个答案:

答案 0 :(得分:0)

您可以获得一个 100% 可移植的独立 JMS 应用程序,而您基本上不需要额外的工作如果您要切换的 JMS 提供程序也提供 JNDI 实现。 JMS 规范不要求 JNDI,但它建立了 JNDI 用于定位管理对象(如连接工厂和目标)的约定,因此 JMS 提供程序也提供 JNDI 实现是很常见的。

简而言之,您的应用程序可以简单地使用 JMS 和 JNDI API。 JMS 和 JNDI 实现细节可以隔离到放置在应用程序类路径上的 jndi.properties 文件。在提供程序之间切换就像更改此属性文件和更改类路径上的 jar 一样简单。

如果您在之间切换的 JMS 提供程序提供 JNDI 实现,那么您将不得不使用特定于实现的代码来创建您的连接工厂和目标。当然,这会损害可移植性,但您应该能够创建自己的 API,将这些细节隔离到您可以自己切换的类中。