我对Liberty来说还很陌生,如果我的问题很简单,请原谅我。
我们有一个独立的应用程序(在Ear中有一个客户端模块jar),在其中将消息发布到IBM MQ中的队列。 我们计划在Liberty Application Client容器中运行该应用程序。
我尝试在client.xml中描述连接工厂,但是失败了。
在client.xml中,为了创建MQ连接工厂,我们进行了以下更改。 1)增加了功能 javaeeClient-7.0 wmqJmsClient-2.0 2)指定了IBM MQ资源适配器的位置 。 3)添加了连接工厂定义。
<feature>javaeeClient-7.0</feature>
<feature>wmqJmsClient-2.0</feature>
<variable name="wmqJmsClient.rar.location" value="/path/to/wmq/rar/wmq.jmsra.rar"/>.
<jmsConnectionFactory jndiName="jms/wmqCF" connectionManagerRef="ConMgr6">
<properties.wmqJms
transportType="CLIENT"
hostName="localhost"
port="1414"
channel="SYSTEM.DEF.SVRCONN"
queueManager="QM1"/>
</jmsConnectionFactory>
<connectionManager id="ConMgr6" maxPoolSize="2"/>
<jmsQueue id="jms/queue1" jndiName="jms/wmqQ1">
<properties.wmqJms
baseQueueName="MDBQ"
baseQueueManagerName="QM1"/>
</jmsQueue>
但是,当我们运行客户端时,会出现以下错误,并且MQ Connection Factory查找失败。
[错误] CWWKF0040E:在client.xml文件中指定的wmqJmsClient-2.0功能仅支持服务器进程类型,这将导致客户端进程无法运行此功能。 。 。 。 嵌套的异常是org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“ prvdCorrspndncServiceImpl”的bean时出错:通过字段“ jmsTemplate”表示的不满足的依赖关系; 嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建在类路径资源[config / mq.xml]中定义的名称为'jmsTemplate'的bean时出错:在设置bean属性'connectionFactory'时无法解析对bean'mqConnectionFactory'的引用; 嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建在类路径资源[config / mq.xml]中定义的名称为'mqConnectionFactory'的bean时出错:调用init方法失败;嵌套的异常是javax.naming.NameNotFoundException:中间上下文不存在:jms / wmqCF
相同的MQ配置适用于部署在Liberty Server中并使用server.xml的其他Web应用程序。
请帮助我了解如何创建MQ连接工厂以从Liberty应用程序客户机容器(client.xml)访问IBM MQ上托管的队列。