簡體   English   中英

從 Java 客戶端獲取連接到 IBM MQ 的 JMSException

[英]Getting JMSException connecting to IBM MQ from Java client

我們正在嘗試從 Java 客戶端連接到 IBM MQ。 我們已經使用 JMSAdmin 實用程序為 JNDI 上下文生成了.bindings 連接到 IBM MQ 時,我們收到以下異常:

ERR fmbaJMS JMSException: JMSWMQ0018: Failed to connect to queue manager '<queue manager name>' with connection mode 'Client' and host name 'null' 

發送的主機名參數為空,而.bindings文件正確具有

mq/RefAddr/30/Content=localhost(51410)
mq/RefAddr/30/Type=CRSHOSTS 

指向 localhost 和端口 51410 的條目。

您的 .bindings 文件看起來不對。 您用來創建它的 JMSAdmin 命令是什么?

MQ0018:無法連接到隊列管理器“bt.qm.ccxp0”

這是您的隊列管理器名稱還是 QCF? 注意:根據 IBM 最佳實踐,隊列管理器名稱應為大寫。

要定義 QCF(隊列連接工廠),您可以執行以下操作:

DEFINE QCF(myQCF) QMANAGER(MQA1) CHANNEL(TEST.CHL) HOSTNAME(127.0.0.1) PORT(1414) TRANSPORT(CLIENT) FAILIFQUIESCE(YES)

要定義 JMS 隊列,您可以執行以下操作:

DEFINE Q(mqs.dev.test.q) QUEUE(TEST.Q1) QMANAGER(MQA1) TARGCLIENT(JMS) FAILIFQUIESCE(YES)

然后在您的代碼中,您將執行以下操作以從 MQ JNDI 加載對象:

Hashtable<String,String> env = new Hashtable<String,String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:/C:/JNDI-Directory");

Context ctx = new InitialContext(env);

QueueConnectionFactory cf = (QueueConnectionFactory) ctx.lookup("myQCF");
Queue q = (Queue) ctx.lookup("mqs.dev.test.q");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM