java - wildfly / jboss-eap:如何命名 JMS 资源以匹配 EJB2 ejb-jar.xml
问题描述
我目前将一个 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.xml
urn: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]"
]
}
解决方案
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"/>
推荐阅读
- charts - 在 Google Charts 中动态设置 visibleInLegend
- c++ - 如何在 C++ 中使用十六进制信息创建 MIDI 文件
- javascript - 使用模块级 const 创建单例 - 打字稿
- javascript - 找不到“未定义”的样式
- r - 更新后恢复 R 包的优雅方法
- hdf5 - 删除表不会释放 pytables 中的磁盘空间
- sql-server - 在 SQL Server 和 PostgreSQL 中兼容的递归 CTE
- react-native - 在反应功能组件中反应本机表单电子邮件和密码验证
- python - AttributeError:“生成器”对象没有“附加”属性
- java - 如何覆盖抽象方法并使用变量而不将它们公开