gpt4 book ai didi

java - 为什么我的 liberty 配置会导致未知对象名称错误?

转载 作者:行者123 更新时间:2023-12-01 14:27:19 25 4
gpt4 key购买 nike

我们正在努力使我们目前在 WebSphere 上运行的项目也能在 Liberty 上运行。

在尝试让 MDB 工作时,我收到以下错误:JMSCMQ0001:IBM MQ 调用失败,compcode“2”(“MQCC_FAILED”)原因“2085”(“MQRC_UNKNOWN_OBJECT_NAME”)

server.xml 的相关部分:

<jmsQueue id="jms/incomingRequestQueue" jndiName="jms/incomingRequestQueue">
<properties.mqJms baseQueueName="QUEUEIN" />
</jmsQueue>

<jmsActivationSpec id="application-ear/application-war/InboundMDB"
authDataRef="mqJms.auth">
<properties.mqJms destinationRef="jms/incomingRequestQueue" destinationType="javax.jms.Queue"
transportType="CLIENT"
hostName="${mqconnection.hostName}" port="${mqconnection.port}"
channel="${mqconnection.channel}"
messageCompression="NONE"
rescanInterval="5000"
sslCipherSuite="${mqconnection.sslCipherSuite}"
brokerControlQueue="${mqconnection.brokerControlQueue}" brokerSubQueue="${mqconnection.brokerSubQueue}"
brokerCCSubQueue="${mqconnection.brokerCCSubQueue}" brokerCCDurSubQueue="${mqconnection.brokerCCDurSubQueue}"/>
</jmsActivationSpec>

Liberty 配置中的值取自 WebSphere。

我的问题是这个错误的原因是否只能是队列名称不正确,或者配置中是否缺少某些内容。

更新:解决方案原来是将destinationRef更改为destination并添加useJNDI="true"

最佳答案

如果您查看 MQ 上的日志并且它似乎正在尝试打开名为 jms/incomingRequestQueue 的 MQ 对象,请尝试将 destinationRef 替换为 destinationLookup。一些为激活规范指定目的地的方法只是将值直接传递给 MQ,而不是在 JNDI 上下文中查找管理对象并获取正确的属性。

请参阅 this table 中的注释关于destination和destinationLookup之间的关系。 DestinationRef 是 Liberty 添加的一个属性,我不确定它如何与资源适配器实际公开的属性相关,但可能使此切换变得不必要。这完全取决于您尝试在队列管理器上查找什么字符串作为队列。

此外,对于那些可能遇到此问题并正在使用 destination 属性(可能与 JMS 1.1/Java EE 6 结合使用)的人,其中 destinationLookup 没有存在,您可以将 useJNDI="true" 指定为激活规范的属性来解决此问题,请参阅上面链接的表格。

关于java - 为什么我的 liberty 配置会导致未知对象名称错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61818732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com