我在两个不同的应用程序中使用MessageDriven Bean,我希望它们是使用单独队列的单独实例。
This SO question证实了我的观点,即我应该能够在部署描述符中设置它(ejb-jar.xml?glassfish-ejb-jar.xml?)。也许简单地覆盖MDB注释中的mappedName
就足够了?
如果有人能指出我在Glassfish中如何做到这一点的一个很好的例子(或者如果我在这里混淆了一些事情就澄清问题),我会感激不尽。
更新
为了澄清,有一个名为AnalyzerBean
的MDB和名为AnalyzerHelper
的资源(前者从队列中读取,后者写入其中)。我是否认为<ejb-ref-name>
对应name
属性而<jndi-name>
对应mappedName
属性?
我的glassfish-ejb-jar.xml现在看起来像这样。我正在尝试为Resource和MDB提供唯一的JNDI名称,但我一直在收到错误:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 EJB 3.1//EN" "http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd">
<glassfish-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>analyzerBean</ejb-name>
<jndi-name>analyzerBean</jndi-name>
<ejb-ref>
<ejb-ref-name>analyzerBean</ejb-ref-name>
<jndi-name>analyzerBeanQueue1</jndi-name>
</ejb-ref>
<resource-ref>
<res-ref-name>analyzerHelper</res-ref-name>
<jndi-name>analyzerHelperResource1</jndi-name>
</resource-ref>
</ejb>
</enterprise-beans>
</glassfish-ejb-jar>