Я использую компонент MessageDriven в двух разных приложениях, и я хотел бы, чтобы они были отдельными экземплярами, использующими отдельные очереди.
Этот вопрос SO подтвердил мое мнение о том, что я долженбыть в состоянии установить это в дескрипторах развертывания (ejb-jar.xml? glassfish-ejb-jar.xml?).Может быть, достаточно просто переопределить mappedName
в аннотации MDB?
Я был бы благодарен, если бы кто-нибудь показал мне хороший пример того, как это сделать в Glassfish (или уточнить вопросы, если я запуталсявещи здесь).
ОБНОВЛЕНИЕ:
Для пояснения, есть MDB с именем AnalyzerBean
и ресурс с именем AnalyzerHelper
(первый читает из очереди,последний пишет в него).Верно ли предположить, что <ejb-ref-name>
соответствует атрибуту name
, а <jndi-name>
соответствует атрибуту mappedName
?
Мой glassfish-ejb-jar.xml теперь выглядит примерно так.Я пытаюсь дать уникальные имена JNDI для ресурса и MDB, но я получаю ошибки:
<?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>