野蝇10中JMS队列的JNDI名称格式



嗨,我正在从 JBoss_6.1.0_final 迁移到野蝇 10。

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

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

在 MDB 注释中是

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

现在在野蝇中,它像下面一样。 参考链接

<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")

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

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

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

最好编写不带前缀的队列名称jms/

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

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

jms子上下文不是必需的。这只是一种最佳实践。

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

最新更新