Topic
4 replies Latest Post - ‏2011-07-15T13:14:33Z by ThirdInstance
wa_liu
wa_liu
9 Posts
ACCEPTED ANSWER

Pinned topic java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path)

‏2011-06-09T08:26:56Z |
Hi all,

I use RAD 7.0.0.8 on a Win-7 64 bit system. I use the SIB message integration bus with the internal WebSphere Server. So, I use only my dev PC to deploy my software. When the program tries to send a message to a queue, I get the following error:


java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path) at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:953) at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:922) at java.lang.System.loadLibrary(System.java:451) at com.ibm.mq.MQSESSION.loadLib(MQSESSION.java:1028) at com.ibm.mq.server.MQSESSION$1.run(MQSESSION.java:246) at java.security.AccessController.doPrivileged(AccessController.java:192) at com.ibm.mq.server.MQSESSION.<clinit>(MQSESSION.java:243) at java.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.J9VMInternals.initialize(J9VMInternals.java:177) at com.ibm.mq.MQSESSIONServer.getMQSESSION(MQSESSIONServer.java:68) at com.ibm.mq.MQSESSION.getSession(MQSESSION.java:508) at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:213) at com.ibm.mq.MQBindingsManagedConnectionFactoryJ11._createManagedConnection(MQBindingsManagedConnectionFactoryJ11.java:186) at com.ibm.mq.MQBindingsManagedConnectionFactoryJ11.createManagedConnection(MQBindingsManagedConnectionFactoryJ11.java:225) at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:84) at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:173) at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:795) at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:709) at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:664) at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:160) at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:550) at com.ibm.mq.MQSPIQueueManager.<init>(MQSPIQueueManager.java:62) at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2489) at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1912) at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:161) at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:66) at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:189) at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:121) at com.mysystem.JMSSend.getSession(JMSSend.java:68) at com.mysystem.JMSSend.sendText(JMSSend.java) .............................


Please, let me know, if you need more information.

Thanks in advance!
Updated on 2011-07-15T13:14:33Z at 2011-07-15T13:14:33Z by ThirdInstance
  • wa_liu
    wa_liu
    9 Posts
    ACCEPTED ANSWER

    Re: java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path)

    ‏2011-06-09T09:03:10Z  in response to wa_liu
    I hope, that this can help you further:

    The source code is written to connect with MQ Series and I am using the V5 Default Messaging Provider:

    private QueueConnectionFactory createFactory(String p_queueManagerName, String p_hostName, int p_port,
                String p_channelName) throws JMSException {
     
            MQQueueConnectionFactory l_factory = new MQQueueConnectionFactory();
            l_factory.setQueueManager(p_queueManagerName);
            l_factory.setHostName(p_hostName);
            l_factory.setPort(p_port);
            l_factory.setChannel(p_channelName);
            if (!isLocalHost(p_hostName)) {
                l_factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
            }
     
            return l_factory;
        }
    
    Updated on 2014-03-25T23:57:15Z at 2014-03-25T23:57:15Z by iron-man
  • LyndonL
    LyndonL
    10 Posts
    ACCEPTED ANSWER

    Re: java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path)

    ‏2011-06-09T12:40:10Z  in response to wa_liu
    Hello Wa,

    I don't use the SIB message integration bus I do use MQ Series V6.0 and have seen a similar error when that platform dependant library is not in the java.library.classpath.

    I'm not sure from your post if the error you get is from a client application or your deployed enterprise application.

    If it is your deployed enterprise application...this was happening to us because the WebSphere Variable for MQ_INSTALL_ROOT was not set correctly. Since you are using the SIB bus I'm not sure if it uses that variable or not so the solution might be slightly different.

    If it is a client application I would say to make sure the location of mqjbnd05.dll is in the PATH environment variable on Windows (Linux uses LIB_PATH I think) before starting your client app so that way it will get added to the java.library.path automatically.

    Best of Luck,

    Lyndon
    • mamwl1
      mamwl1
      212 Posts
      ACCEPTED ANSWER

      Re: java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path)

      ‏2011-06-09T12:58:52Z  in response to LyndonL
      Hi,

      The original stack trace implies that the WMQ messaging provider is being used, not the default messaging provider (SIBus). The problem is because you are trying to create a bindings mode connection to a WMQ queue manager and you don't have the bindings libraries on your path, as mentioned by the other posters. So the question is, do you mean to create a bindings mode connection? This will only ever work if you are connecting to a queue manager running on the same machine as the client. If that is not the case you need a client mode connection, this can be configured in WAS (assuming you are looking the connection factory up from WAS JNDI which is best practice).

      If you want to create a bindings mode connection then you need to setup your library path. There are many ways to do this. The recommended approach with WAS clients is to set the MQ_INSTALL_ROOT variable (WAS 7 onwards), in a WAS server you can use this variable or set the native library path on the WMQ messaging provider (WAS 7 onwards). Detailed information about this can be found in the WAS information center.

      Regarding Lyndon's statement about whether the SIBus makes use of MQ_INSTALL_ROOT, the answer is yes it does but indirectly via WMQ.

      HTH, Matt.
  • ThirdInstance
    ThirdInstance
    2 Posts
    ACCEPTED ANSWER

    Re: java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path)

    ‏2011-07-15T13:14:33Z  in response to wa_liu
    Hello Everybody,
    I am trying to integrate JD Edwards E1 (JDE) with an external WMS system using IBM MQ. JDE uses JNDI configuration parameters, setup on Websphere application server to write to MQ. The JDE component that generates the messages : Transaction Server, runs on a WAS instance.

    I have the following setup :

    MQ Queue Manager : QM_IN_AIR_JDEWS, Running on port 1414
    MQ Queue Name : RTE_TEST_QUEUE3

    WAS Config :
    Provider : Websphere MQ Messaging Provider
    Queue Connection Factory :RTE_TEST_QUEUE3QCF (JNDI Name : jms/RTE_TEST_QUEUE3QCF)
    Queue Name : RTE_TEST_QUEUE3 (JNDI Name : jms/RTE_TEST_QUEUE3)

    When executing the transaction, I can see the error message below in JD Edwards Transaction Server Logs :

    " Throwable Occurs while sending the event Failed to send Event to Esb Subscriber PKHELJAD with the following Queue Details. Please check the values and try again http://ContextFactory -com.ibm.websphere.naming.WsnInitialContextFactorypvdrURL -corbaloc:iiop:IN-AIR-JDEWS:2813/NameServiceServerRootconFactJNDI -jms/RTE_TEST_QUEUE3QCFqueueName -jms/RTE_TEST_QUEUE3[userName -kurTvFkOjhw=exception :mqjbnd05 (Not found in java.library.path) java.lang.UnsatisfiedLinkError: mqjbnd05 (Not found in java.library.path) "

    Also, would I need to configure WAS App Server to include references to the Websphere MQ server ? Or configuring the Queue Connection Factory and Queues with JNDI names would be enough ?

    Any help is highly appreciated.

    Regards,
    Prasad Kheljade