找不到本地JNI库'mqjbnd64'。
请有人可以帮助我获得mqjbnd64
这是我的代码
ConnectionFactory connectionFactory=null;
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:/C:/CWMQv75-POT/JMS/JNDI Namespace");
try{
Context ctx = new InitialContext(env);
// MQQueueManager qm = (MQQueueManager)ctx.lookup("QM");
MQConnectionFactory cf = (MQConnectionFactory) ctx.lookup("CF1");
// cf.createConnection().start();
MQQueue q = (MQQueue) ctx.lookup("JMS1");
connectionFactory = (ConnectionFactory)ctx.lookup("CF1");
System.out.println("succes "+q.getBaseQueueManagerName().toString() + " " + q.getBaseQueueName()+" " +" " + cf.getChannel() );
} catch (NamingException e)
{
System.err.println(e.getLocalizedMessage());
e.printStackTrace();
}
Connection connection = connectionFactory.createConnection();
}
最佳答案
找不到本地JNI库'mqjbnd64'
问题:
1)您是在SAME服务器上作为队列管理器还是在其他服务器上运行JMS应用程序?
2)定义QCF时,是否包括主机,端口号,通道名称?
3)您了解在绑定模式下与客户端模式下连接到队列管理器之间的区别吗?
如果您的应用程序与队列管理器在同一服务器上运行,则只能以绑定模式连接。在绑定模式下连接时,JMS / Java MQ库使用本机MQ库,因此,它需要Windows上的mqjbnd64共享库或DLL来执行MQ API调用。
大多数MQ应用程序与队列管理器不在同一服务器上,它们将使用客户端模式连接到远程队列管理器,并且您的QCF类似于:
DEFINE QCF(MYQCF) QMANAGER(MQWL1) CHANNEL(TESTCHL) HOSTNAME(10.10.10.10) PORT(1414) TRANSPORT(CLIENT) FAILIFQUIESCE(YES)
我注意到的另一件事:
env.put(Context.PROVIDER_URL, "file:/C:/CWMQv75-POT/JMS/JNDI Namespace");
应该是:
env.put(Context.PROVIDER_URL, "file://C:/CWMQv75-POT/JMS/JNDI Namespace");
您应该在“ file:”之后有2个正斜杠“ //”。
关于java - 创建connectioFactory JMS Websphere MQ时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30049453/