Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java客户端获取连接到IBM MQ的JMSException_Java_Jms_Ibm Mq - Fatal编程技术网

从Java客户端获取连接到IBM MQ的JMSException

从Java客户端获取连接到IBM MQ的JMSException,java,jms,ibm-mq,Java,Jms,Ibm Mq,我们正在尝试从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' 指向localhost

我们正在尝试从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' 

指向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)
DEFINE Q(mqs.dev.test.q) QUEUE(TEST.Q1) QMANAGER(MQA1) TARGCLIENT(JMS) FAILIFQUIESCE(YES)
要定义JMS队列,请执行以下操作:

DEFINE QCF(myQCF) QMANAGER(MQA1) CHANNEL(TEST.CHL) HOSTNAME(127.0.0.1) PORT(1414) TRANSPORT(CLIENT) FAILIFQUIESCE(YES)
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");
Hashtable env=new Hashtable();
put(Context.INITIAL\u Context\u工厂,“com.sun.jndi.fscontext.RefFSContextFactory”);
env.put(Context.PROVIDER_URL,“文件:/C:/JNDI目录”);
Context ctx=新的初始上下文(env);
QueueConnectionFactory cf=(QueueConnectionFactory)ctx.lookup(“myQCF”);
Queue q=(Queue)ctx.lookup(“mqs.dev.test.q”);

您的.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)
DEFINE Q(mqs.dev.test.q) QUEUE(TEST.Q1) QMANAGER(MQA1) TARGCLIENT(JMS) FAILIFQUIESCE(YES)
要定义JMS队列,请执行以下操作:

DEFINE QCF(myQCF) QMANAGER(MQA1) CHANNEL(TEST.CHL) HOSTNAME(127.0.0.1) PORT(1414) TRANSPORT(CLIENT) FAILIFQUIESCE(YES)
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");
Hashtable env=new Hashtable();
put(Context.INITIAL\u Context\u工厂,“com.sun.jndi.fscontext.RefFSContextFactory”);
env.put(Context.PROVIDER_URL,“文件:/C:/JNDI目录”);
Context ctx=新的初始上下文(env);
QueueConnectionFactory cf=(QueueConnectionFactory)ctx.lookup(“myQCF”);
Queue q=(Queue)ctx.lookup(“mqs.dev.test.q”);

我想我们需要看到更多的代码。您引用的文件
.bindings
由JVM的
RefFSContextFactory
JNDI提供程序读取,它必须以特定的方式初始化。我认为我们需要查看更多代码。您引用的文件
.bindings
由JVM的
RefFSContextFactory
JNDI提供程序读取,该提供程序必须以特定方式初始化。此处发送的主机名为“null”。。。(错误fmbaJMS JMSExException:JMSWMQ0018:无法连接到连接模式为“客户端”且主机名为“null”的队列管理器“bt.qm.ccxp0”。。。这可能是问题吗?正如我上面所说:您用来创建它的JMSAdmin命令是什么?java-Djava.library.path=$MQ\u java\u LIB\u path-DMQJMS\u LOG\u DIR=$MQ\u java\u DATA\u path/LOG-DMQJMS\u TRACE\u DIR=$MQ\u java\u DATA\u path/TRACE-DMQJMS\u INSTALL\u path=$MQ\u java\u INSTALL

文件中的内容是您给我们的运行命令吗JMSAdmin工具。我想看看JMSAdmin工具处理的JMSAdmin命令。正如JoshMc所说,$FILE中是什么?这里发送的主机名是“null”。。。(错误fmbaJMS JMSExException:JMSWMQ0018:无法连接到连接模式为“客户端”且主机名为“null”的队列管理器“bt.qm.ccxp0”。。。这可能是问题吗?正如我上面所说:您用来创建它的JMSAdmin命令是什么?java-Djava.library.path=$MQ\u java\u LIB\u path-DMQJMS\u LOG\u DIR=$MQ\u java\u DATA\u path/LOG-DMQJMS\u TRACE\u DIR=$MQ\u java\u DATA\u path/TRACE-DMQJMS\u INSTALL\u path=$MQ\u java\u INSTALL

文件中的内容是您给我们的运行命令吗JMSAdmin工具。我想看看JMSAdmin工具处理的JMSAdmin命令。正如JoshMc所说,$文件中有什么?