WildFly/JBoss EAP迁移EJB2时JMS资源匹配ejb-jar.xml命名问题
错误根因
部署失败的核心原因是JNDI路径不匹配。JBoss EAP处理EJB2部署描述符中的资源引用时,默认会将res-ref-name和resource-env-ref-name定义的相对路径,放到java:jboss/resources/命名空间下查找。
从报错信息可以明确看到容器实际需要的资源路径为:
java:jboss/resources/jms/customQueueFactoryjava:jboss/resources/jms/customQueue
而你在消息组件配置中给JMS资源绑定的JNDI路径是java:/jms/xxx,两者不一致因此触发依赖缺失错误。
解决方案(无需修改原有业务代码和ejb-jar.xml)
只需要调整standalone-full.xml中的JMS资源配置,给资源新增匹配容器查找规则的JNDI别名即可,entries属性支持同时配置多个绑定路径:
<connection-factory name="customQueueFactory" entries="java:/jms/customQueueFactory java:jboss/resources/jms/customQueueFactory" connectors="in-vm"/> <jms-queue name="customQueue" entries="java:/jms/customQueue java:jboss/resources/jms/customQueue"/>
该配置保留了你原有java:/jms/xxx的绑定路径,原有直接引用该路径的逻辑不受影响,同时新增的别名可以匹配EJB2资源引用的查找规则,完全符合你第一阶段尽可能少改代码的要求。
内容的提问来源于stack exchange,提问作者asbachb
相关产品推荐
相关产品推荐

