Wildfly10中JMS队列的JNDI名称格式

Posted

技术标签:

【中文标题】Wildfly10中JMS队列的JNDI名称格式【英文标题】:JNDI name format of JMS queue in wildfly10 【发布时间】:2018-02-13 12:15:05 【问题描述】:

您好,我正在从 JBoss_6.1.0_final 迁移到 Wildfly 10。

在 JBoss 中,队列名称的格式类似于

<queue name="TEST_QUEUE">
  <entry name="/queue/TEST_QUEUE"/>
</queue>

在MDB注解中是

@ActivationConfigProperty(propertyName = "destination",
                propertyValue = "queue/TEST_QUEUE")

现在在 wildfly 中,如下所示。 reference link

<jms-queue name="TEST_QUEUE" entries="jms/queue/TEST_QUEUE java:jboss/exported/jms/queue/TEST_QUEUE"/>

带有激活属性

@ActivationConfigProperty(propertyName = "destination",
                        propertyValue = "jms/queue/TEST_QUEUE")

在wildfly中,我尝试从队列名称和注释中删除jms/,它在具有相同队列名称的wildfly中工作正常, 喜欢

<jms-queue name="TEST_QUEUE" entries="queue/TEST_QUEUE java:jboss/exported/queue/TEST_QUEUE"/>

现在我的问题是,JMS/ 是否有意添加到队列名称中。

最好写队列名而不带前缀jms/

【问题讨论】:

【参考方案1】:

来自 JEE JSR 部分 EE.5.7.1.2 资源管理器连接工厂参考的编程接口

本规范建议但不要求将所有资源管理器连接工厂引用组织在应用程序组件环境的子上下文中,为每种资源管理器类型使用不同的子上下文。例如,应在 java:comp/env/jdbc 子上下文中声明所有 JDBC™ DataSource 引用,在 java:comp/env/jms 子上下文中声明所有 JMS 连接工厂,在 java:comp/env/mail 中声明所有 JavaMail 连接工厂子上下文,以及 java:comp/env/url 子上下文中的所有 URL 连接工厂。请注意,默认情况下,通过注释声明的资源管理器连接工厂引用不会出现在任何子上下文中

jms 子上下文不是强制性的。这只是一个最佳实践。

服务器可以或不遵循这种模式。 JBoss 没有遵循这一点,wildfly 是,但最终,做你想做的事是你的决定。但这是一个非常好的做法,因为它对每个人都更干净。

【讨论】:

以上是关于Wildfly10中JMS队列的JNDI名称格式的主要内容,如果未能解决你的问题,请参考以下文章

JMS 和 Weblogic 集群

如何将 JMS 消息从 WildFly 10 发送到远程 ActiveMQ

如何使用 jboss-cli 在 WildFly 17 中创建 JMS 队列

Wildfly JMS:当消息存在时,MDB bean 空闲

如何在 WildFly 10 中将爆炸战争部署为文件夹

如何使用 ActiveMQ Artemis 在 Wildfly 24 服务上配置 jms-queue