我正在尝试设置连接到MQ7中的本地队列管理器的java应用程序,而不是在绑定模式下在我的机器上安装WebSphere Application Server。如果没有在.bindings文件中指定主机,运行我的应用程序将在以下某处抛出一个java异常:
com.ibm.msg.client.jms.DetailedIllegalStateException:JMSWMQ0018: 无法使用连接模式连接到队列管理器“TBUKKKNN” '客户'和主机名''。检查队列管理器是否已启动以及是否 在客户端模式下运行,检查是否有运行的监听器。请参阅 链接的例外以获取更多信息。
尽管WebSphere MQ的文档明确否定了在没有安装WAS的情况下连接到MQ7的可能性,但我的同事们非常有信心为此提供解决方法。
非常感谢有人能帮我解决这个问题。或者如果需要对我的问题进行更多澄清,请告诉我。
答案 0 :(得分:5)
我前一段时间写了an article,解释了如何做到这一点,所以我对任何说明无法完成的文档感到有些困惑。不仅有“解决方法”,而且它得到官方支持,WMQ Client安装媒体附带的示例程序包括几个使用Java和JMS但不使用Java EE服务器的程序。如果由于某种原因你只是抓住了jar文件而不是安装供应商发行版,你可以免费下载它来获取样本。 v7.0客户端is here和v7.1客户端is here。此外,请确保使用与您的客户端版本匹配的文档版本。 v7.0信息中心is here和v7.1信息中心is here。顺便说一句,任何客户端版本都可以连接到v7.0 QMgr。
无论如何,您的错误消息表明您的连接工厂传输类型仍设置为客户端。您需要将其更改为BIND。属性描述为here。登录页面包含所有管理对象is here的所有属性列表。
答案 1 :(得分:2)
更改为cf.setTransportType(MQCNO_STANDARD_BINDING);
...应该有效
答案 2 :(得分:-1)
cf.setTransportType(WMQConstants.WMQ_CM_BINDINGS);
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_BINDINGS);