Я перенес приложение из WebLogic на сервер приложений JBoss.И мне нужно оставить имена JNDI для JMS в коде такими же, как и в WebLogic.Для этого я пытаюсь использовать resource-ref в файле web.xml и jboss-web.xml.Но всегда получаю ошибку:
"WFLYCTL0412: Required services that are not installed:" => [
"jboss.naming.context.java.comp.connect.connect-ejb.ConnectCGMPeriodicMessageBean.env.jms.ConnectConnectionFactory",
"jboss.naming.context.java.comp.connect.connect-ejb.ConnectCGMPeriodicMessageBean.env.jms.ConnectSMSQueue"
]
Мое предположение, что ресурс-ссылка не работает с MDB из другого модуля.Потому что, если я добавлю MDB в connect-api (веб-модуль) - ресурс-ссылка будет работать хорошо.Может быть, мне нужно сделать ресурс-реф на уровне банки или уха?И как я могу это сделать?Для целей тестирования я также создал простой веб-проект для тестирования, и там ресурс-ссылка работает хорошо.
У меня есть многомодульное приложение, которое упаковано в один файл с ушами.application.xml of ear:
<module>
<web>
<web-uri>connect-api.war</web-uri>
<context-root>/api/connect/v1</context-root>
</web>
</module>
<module>
<ejb>connect-ejb.jar</ejb>
</module>
В модуле connect-ejb.jar у меня есть Message Driven Bean:
@MessageDriven
@RequestScoped
@TransactionManagement(TransactionManagementType.BEAN)
public class ConnectCGMPeriodicMessageBean extends AbstractConnectBean {
@Resource(mappedName = "jms/ConnectConnectionFactory")
private ConnectionFactory m_factory;
@Resource(mappedName = "jms/ConnectSMSQueue")
private Queue m_queue;
}
web.xml модуля connect-api.war:
<resource-ref>
<res-ref-name>jms/ConnectConnectionFactory</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<res-ref-name>jms/ConnectSMSQueue</res-ref-name>
<res-type>javax.jms.Queue</res-type>
<res-auth>Container</res-auth>
</resource-ref>
jboss-web.xml модуля connect-api.war:
<resource-ref>
<res-ref-name>jms/ConnectConnectionFactory</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<jndi-name>java:/jms/ConnectConnectionFactory</jndi-name>
</resource-ref>
<resource-ref>
<res-ref-name>jms/ConnectSMSQueue</res-ref-name>
<res-type>javax.jms.Queue</res-type>
<jndi-name>java:/jms/ConnectSMSQueue</jndi-name>
</resource-ref>
в standalone-full.xml Я добавляю:
<jms-queue name="jms/ConnectSMSQueue" entries="java:/jms/ConnectSMSQueue"/>
<connection-factory name="jms/ConnectConnectionFactory" entries="java:/jms/ConnectConnectionFactory" connectors="in-vm"/>