我试图连接到运行在Sun 1.7 JDK中的Linux 64位上的Websphere MQ 6。通过LDAP连接到Websphere MQ java.lang.UnsatisfiedLinkError:java.library.pat中没有mqjbnd
我试图通过JNDI连接到MQServer,在LDAP中查找对象,因为我的应用程序服务器与MQ服务器是分开的,因此我无法使用文件系统JNDI。
这一切工作正常,在我的开发框,但我有1)Windows和2)已安装MQ服务器。
我可以通过Websphere MQ Explorer连接到LDAP并在LDAP中创建绑定对象。
Java应用程序可以访问JNDI对象,并尝试建立一个连接,但我得到一个错误java.lang.UnsatisfiedLinkError中:在任何的java.library.path mqjbnd
我从here
安装7.5客户端LD_LIBRARY_PATH运行命令后设置为默认值
. /opt/mqm/bin/setmqenv -s -l
实际路径是
LD_LIBRARY_PATH = /usr/java/default/jre/lib/i386:/opt/mqm/lib64/compat:/opt/mqm/lib/compat
我还在JVM上明确设置了-Djava.library.path = $ LD_LIBRARY_PATH。
但是,当我看看路径/ opt/mqm/lib64/compat:/ opt/mqm/lib/compat时,我看不到mqjbnd或类似的东西。
许多帖子和技术讨论说,客户端中没有mqjbnd只安装服务器。我感到困惑,因为我只想查找QueueManager并通过JNDI使用队列项 - 我应该只需要安装客户端而不是服务器?
LDAP方法是否适合我使用?我试图使用com.ibm.mq.jms.context.WMQInitialContextFactory,但永远无法为此获得安全权限。
对不起,但这是做我的头它 - 我不能帮助比较这与易于连接到ActiveMQ - 我必须在这里做错了什么。
例外是
[2013-03-13 14:32:41,389] ERROR - ServiceTaskManager Error acquiring a JMS connection to : cn=ConnectionFactoryLdap using JNDI properties : {java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, java.naming.provider.url=ldap://LDAPSERVER:10389/dc=example,dc=com, transport.jms.ConnectionFactory=ibmMQQueueConnectionFactory, transport.jms.ConnectionFactoryType=queue, serviceType=proxy}
com.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: An exception occurred in the Java(tm) MQI.
The Java(tm) MQI has thrown an exception describing the problem.
See the linked exception for further information.
at sun.reflect.GeneratedConstructorAccessor30.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:319)
at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:233)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:6863)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:6254)
at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:285)
at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6189)
at com.ibm.mq.jms.MQConnectionFactory.createConnection(MQConnectionFactory.java:6218)
at org.apache.axis2.transport.jms.JMSUtils.createConnection(JMSUtils.java:555)
at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.createConnection(ServiceTaskManager.java:824)
at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.getConnection(ServiceTaskManager.java:706)
at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.receiveMessage(ServiceTaskManager.java:496)
at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:420)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2495;AMQ8568: The native JNI library 'mqjbnd' was not found. For a client installation this is expected. [3=mqjbnd]
at com.ibm.mq.jmqi.local.LocalMQ$1.run(LocalMQ.java:304)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.mq.jmqi.local.LocalMQ.initialise_inner(LocalMQ.java:268)
at com.ibm.mq.jmqi.local.LocalMQ.initialise(LocalMQ.java:231)
at com.ibm.mq.jmqi.local.LocalMQ.<init>(LocalMQ.java:1194)
at com.ibm.mq.jmqi.local.LocalServer.<init>(LocalServer.java:206)
at sun.reflect.GeneratedConstructorAccessor29.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.ibm.mq.jmqi.JmqiEnvironment.getInstance(JmqiEnvironment.java:732)
at com.ibm.mq.jmqi.JmqiEnvironment.getMQI(JmqiEnvironment.java:666)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:6855)
... 13 more
Caused by: java.lang.UnsatisfiedLinkError: no mqjbnd in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1138)
at com.ibm.mq.jmqi.local.LocalMQ$1.run(LocalMQ.java:279)
... 24 more
此链接讨论与MQ v7类似的问题。可能对你有帮助。 http://www-01.ibm.com/support/docview.wss?uid=swg21413508 – Shashi 2013-03-13 05:42:03
谢谢你,但我没有提到文件/opt/mqm/java/lib/libmqjbnd.so - 所以也许我需要服务器安装或我的应用程序服务器上的东西? – Steve666 2013-03-13 07:32:06
这部分异常让我感到困惑_对于客户端安装,这是expected_ – Steve666 2013-03-13 07:33:09