【发布时间】:2010-11-25 00:18:39
【问题描述】:
我无法理解在哪里定义 JBoss 中的 JMS 队列实现所需的 JMS 资源。目前我正在处理的代码适用于 WebLogic,我正在尝试将其迁移到 JBoss 4.3 eap。
在 weblogic 中,有一个 jms.xml 文件定义了 JMS 资源和 JNDI 查找名称。例如:
<quota name="CacheT.Quota">
<bytes-maximum>9999999999999999999</bytes-maximum>
<messages-maximum>9999999999999999999</messages-maximum>
<policy>FIFO</policy>
<shared>false</shared>
</quota>
<template name="MessQ">
<delivery-failure-params>
<redelivery-limit>1</redelivery-limit>
<expiration-policy>Discard</expiration-policy>
</delivery-failure-params>
</template>
<connection-factory name="Queue Conn Fact">
<default-targeting-enabled>true</default-targeting-enabled>
<jndi-name>com.company.QueueConnFact</jndi-name>
<default-delivery-params>
<default-delivery-mode>Persistent</default-delivery-mode>
</default-delivery-params>
<transaction-params>
<xa-connection-factory-enabled>false</xa-connection-factory-enabled>
</transaction-params>
<security-params>
<attach-jmsx-user-id>false</attach-jmsx-user-id>
</security-params>
</connection-factory>
<queue name="EMessQ">
<sub-deployment-name>Product_JMS</sub-deployment-name>
<template>MessQ</template>
<jndi-name>com.company.EMessQ</jndi-name>
</queue>
<uniform-distributed-topic name="CacheT">
<sub-deployment-name>Product_JMS</sub-deployment-name>
<jndi-name>com.company.CacheT</jndi-name>
<load-balancing-policy>Round-Robin</load-balancing-policy>
</uniform-distributed-topic>
在我的一生中,我似乎不明白这些资源将在 JBoss 中的何处定义。看了the JBoss Community Wiki之后,没有任何问题得到解答。请记住,我对整个 JMS 事物是新手,对 JBoss 来说相对较新。我确实找到了这个link,但这似乎是在讨论 JBossMessaging,据我所知,这是一个新的 JMS 实现,它在版本 JBoss 5 中,而不是 4.3。
我们的应用程序部署为 EAR 文件,其中包含 WAR 和公共库 JAR。一些further googling 建议我必须将这些定义添加到每个单独的 jboss.xml 中,我想避免这样做。
基本上,我很困惑。我正在尝试在进行这些更改时学习 JMS,但我似乎无法弄清楚这部分。
感谢您的帮助。
【问题讨论】: