wildfly / jboss-eap:如何命名 JMS 资源以匹配 EJB2 ejb-jar.xml

Posted

技术标签:

【中文标题】wildfly / jboss-eap:如何命名 JMS 资源以匹配 EJB2 ejb-jar.xml【英文标题】:wildfly / jboss-eap: How to name JMS resources to match EJB2 ejb-jar.xml 【发布时间】:2021-11-18 03:56:26 【问题描述】:

我目前将一个 EJB2 应用程序迁移到 jboss-eap。第一阶段尝试修改尽可能少的源代码。

ejb-jar.xml 包含

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar id="ejb-jar_ID">
      [...]
      <session >

         [...]

         <resource-ref >
            <res-ref-name>jms/customQueueFactory</res-ref-name>
            <res-type>javax.jms.QueueConnectionFactory</res-type>
            <res-auth>Container</res-auth>
            <res-sharing-scope>Shareable</res-sharing-scope>
         </resource-ref>

         <resource-env-ref >
            <resource-env-ref-name>jms/customQueue</resource-env-ref-name>
            <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
         </resource-env-ref>

      </session>

我在standalone-full.xmlurn:jboss:domain:messaging-activemq:13.0添加了以下配置:

  <connection-factory name="customQueueFactory" entries="java:/jms/customQueueFactory" connectors="in-vm"/>
  <jms-queue name="customQueue" entries="java:/jms/customQueue"/>

但是当我启动 jboss 时 jms 资源无法得到解决:

02:26:30,651 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "app.ear")]) - failure description: 
    "WFLYCTL0412: Required services that are not installed:" => [
        "jboss.naming.context.java.jboss.resources.jms.customQueueFactory",
        "jboss.naming.context.java.jboss.resources.jms.customQueue"
    ],
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [
        "jboss.naming.context.java.comp.app.app-mdb.Sender.env.jms.customQueueFactory is missing [jboss.naming.context.java.jboss.resources.jms.customQueueFactory]",
        "jboss.naming.context.java.comp.app.app-mdb.Sender.env.jms.customQueue is missing [jboss.naming.context.java.jboss.resources.jms.customQueue]"
    ]

【问题讨论】:

【参考方案1】:

jboss-eap 7.4 的默认查找前缀是java:jboss/resources。因此,为了使其正常工作,需要相应地调整导出的名称:

  <connection-factory name="customQueueFactory" entries="java:jboss/resources/jms/customQueueFactory" connectors="in-vm"/>
  <jms-queue name="customQueue" entries="java:jboss/resources/jms/customQueue"/>

【讨论】:

以上是关于wildfly / jboss-eap:如何命名 JMS 资源以匹配 EJB2 ejb-jar.xml的主要内容,如果未能解决你的问题,请参考以下文章

深入理解 JBoss 7/WildFly Domain 模式启动过程

JBoss EAP / Wildfly错误重命名临时文件

如何使用jboss-eap-5.1服务器在Linux环境中进行线程转储

首次使用JBoss流程(windows下)

在 Eclipse Luna 中配置 jboss-eap-6.4 服务器时分配正确的主目录时出错

作为部署安装时的 jboss-eap-6.1 oracle 驱动程序定义