ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » IBM MQ Java / JMS » Error invoking Java JMS program

Post new topic  Reply to topic
 Error invoking Java JMS program « View previous topic :: View next topic » 
Author Message
Gideon
PostPosted: Mon Mar 18, 2013 2:10 pm    Post subject: Error invoking Java JMS program Reply with quote

Chevalier

Joined: 18 Aug 2009
Posts: 403

I am not a programmer.

I found the following JMS program at the following site:

http://hursleyonwmq.wordpress.com/2007/05/29/simplest-sample-applications-using-websphere-mq-jms/

I am running this on a Windows platform on which the WMQ 7.5 server is
installed. I copied the JMS jars to the local directory, and reference the lib file in the java invocation.

I rewrote the program as follows:

Code:
import javax.jms.JMSException;
import javax.jms.Session;

import com.ibm.jms.JMSMessage;
import com.ibm.jms.JMSTextMessage;
import com.ibm.mq.jms.JMSC;
import com.ibm.mq.jms.MQQueue;
import com.ibm.mq.jms.MQQueueConnection;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.mq.jms.MQQueueReceiver;
import com.ibm.mq.jms.MQQueueSender;
import com.ibm.mq.jms.MQQueueSession;

public class Send {

  public static void main(String[] args) {

   try {
      MQQueueConnectionFactory cf = new MQQueueConnectionFactory();

      // Config
      cf.setHostName("10.14.101.174");
      cf.setPort(1414);
      cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
      cf.setQueueManager("WQM");
      cf.setChannel("SYSTEM.ADMIN.SVRCONN");
   
    System.out.println("HERE  --- Right before MQQueueConnection \n");

      MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection();
    System.out.println("HERE  --- Right after MQQueueConnection  ");
   

      MQQueueSession    session    = (MQQueueSession)    connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

      MQQueue           queue      = (MQQueue)           session.createQueue("queue:///TEST");

      MQQueueSender     sender     = (MQQueueSender)     session.createSender(queue);

      MQQueueReceiver   receiver   = (MQQueueReceiver)   session.createReceiver(queue);     
    System.out.println("HERE  --- 4 \n  ");
      long uniqueNumber = System.currentTimeMillis() % 1000;
      JMSTextMessage message = (JMSTextMessage) session.createTextMessage("Msg:"+ uniqueNumber);
    System.out.println("HERE  --- 5  ");
      // Start the connection
      connection.start();

      sender.send(message);
      System.out.println("Sent message:\\n" + message);

      JMSMessage receivedMessage = (JMSMessage) receiver.receive(10000);
      System.out.println("\\nReceived message:\\n" + receivedMessage);

      sender.close();
      receiver.close();
      session.close();
      connection.close();

      System.out.println("\\nSUCCESS\\n");
    }
    catch (JMSException jmex) {
      System.out.println("JMS Exception" + jmex);
    }
    catch (Exception ex) {

      System.out.println("Std Exception" + ex);
    }
  }
}


I compile the program with warnings:

Code:
C:\MQClient>"C:\Program Files (x86)\Java\jdk1.6.0_06\bin\"javac -Xlint:deprecati
on  -classpath jms.jar;com.ibm.mq.jar;dhbcore.jar;connector.jar;com.ibm.mq.jmqi.
jar;com.ibm.mqjms.jar;jms.jar Send.java
Send.java:6: warning: [deprecation] com.ibm.mq.jms.JMSC in com.ibm.mq.jms has be
en deprecated
import com.ibm.mq.jms.JMSC;
                     ^
Send.java:24: warning: [deprecation] com.ibm.mq.jms.JMSC in com.ibm.mq.jms has b
een deprecated
      cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
                          ^
2 warnings

C:\MQClient>


I get a problem when I invoke the program (Notice there is not a linked list after the error)

Code:
C:\MQClient>java -Djava.library.path="C:\Program Files (x86)\Java\jdk1.6.0_06\li
b" -cp ;com.ibm.mq.jar;com.ibm.mq.jmqi.jar;com.ibm.mqjms.jar";"C:\MQClient\conne
ctor.jar;dhbcore.jar;jms.jar Send
HERE  --- Right before MQQueueConnection

JMS Exceptioncom.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: An excepti
on occurred in the Java(tm) MQI.
The Java(tm) MQI has thrown an exception describing the problem.
See the linked exception for further information.

C:\MQClient>


The code is failing on the following line:

Code:
    MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection();


The -verbose option provides the following info

Code:
class load: com.ibm.msg.client.jms.DetailedJMSException from: file:/C:/MQClient/
com.ibm.mqjms.jar
JMS Exceptioncom.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: An excepti
on occurred in the Java(tm) MQI.
The Java(tm) MQI has thrown an exception describing the problem.
See the linked exception for further information.
class load: java/util/IdentityHashMap$1
class load: java/util/IdentityHashMap$IdentityHashMapIterator
class load: java/util/IdentityHashMap$1$1
class load: java/util/IdentityHashMap$IdentityHashMapEntry
class load: com/ibm/tools/attach/javaSE/NonBlockingFileLockManager
class load: java/nio/channels/ClosedChannelException
class load: java/util/LinkedHashMap$1
class load: java/util/LinkedHashMap$KeyIterator

C:\MQClient>


I checked the channel, it is easily accessed (I used SYSTEM.ADMIN.SRVCONN so I could test via the Explorer)

What should I do to diagnose and recover ?
Back to top
View user's profile Send private message Send e-mail
Gideon
PostPosted: Mon Mar 18, 2013 3:34 pm    Post subject: Reply with quote

Chevalier

Joined: 18 Aug 2009
Posts: 403

The Stack Trace contains:

Code:
C:\MQClient>java -Djava.library.path="C:\Program Files (x86)\Java\jdk1.6.0_06\li
b" -cp ;com.ibm.mq.jar;com.ibm.mq.jmqi.jar;com.ibm.mqjms.jar";"C:\MQClient\conne
ctor.jar;dhbcore.jar;jms.jar Send
HERE  --- Right before MQQueueConnection

JMS Exceptioncom.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: An excepti
on occurred in the Java(tm) MQI.
The Java(tm) MQI has thrown an exception describing the problem.
See the linked exception for further information.
com.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: An exception occurred i
n 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.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:44)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:39)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:516)
        at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NL
SServices.java:319)
        at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLS
Services.java:233)
        at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7Provide
rConnection(WMQConnectionFactory.java:6863)
        at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderC
onnection(WMQConnectionFactory.java:6254)
        at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnectio
n(JmsConnectionFactoryImpl.java:285)
        at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectio
nFactory.java:6189)
        at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueue
ConnectionFactory.java:120)
        at Send.main(Send.java:30)
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2195;AMQ9546: Error return cod
e received. [1=java.lang.reflect.InvocationTargetException[null],3=NativeConstru
ctorAccessorImpl.newInstance0]
        at com.ibm.mq.jmqi.JmqiEnvironment.processESESecurity(JmqiEnvironment.ja
va:1033)
        at com.ibm.mq.jmqi.JmqiEnvironment.getInstance(JmqiEnvironment.java:860)

        at com.ibm.mq.jmqi.JmqiEnvironment.getMQI(JmqiEnvironment.java:666)
        at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7Provide
rConnection(WMQConnectionFactory.java:6855)
        ... 5 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:44)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:39)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:516)
        at com.ibm.mq.jmqi.JmqiEnvironment.processESESecurity(JmqiEnvironment.ja
va:940)
        ... 8 more
Caused by: java.lang.NoClassDefFoundError: com.ibm.mq.headers.MQDataException
        at java.lang.J9VMInternals.verifyImpl(Native Method)
        at java.lang.J9VMInternals.verify(J9VMInternals.java:72)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:134)
        at com.ibm.mq.ese.service.ServicesFactoryImpl.createPolicyService(Servic
esFactoryImpl.java:173)
        at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.createServices(InterceptedJmq
iImpl.java:227)
        at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.<init>(InterceptedJmqiImpl.ja
va:180)
        at com.ibm.mq.ese.jmqi.ESEJMQI.<init>(ESEJMQI.java:117)
        ... 13 more
Caused by: java.lang.ClassNotFoundException: com.ibm.mq.headers.MQDataException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:421)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:652)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:346)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:618)
        ... 20 more

C:\MQClient>
Back to top
View user's profile Send private message Send e-mail
fjb_saper
PostPosted: Mon Mar 18, 2013 7:15 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20696
Location: LI,NY

you said that you're not a programmer. So keep your hands of programming or expect pain in direct intensity with your ignorance.

Look in the examples in the samples directory. If you don't find the directory update the installation and make sure the MQ SDK is installed.

Have fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
Gideon
PostPosted: Tue Mar 19, 2013 11:19 am    Post subject: Reply with quote

Chevalier

Joined: 18 Aug 2009
Posts: 403

Thanks for you post, very helpful

I reinstalled the WMQ Client for 7.5

I found the following program:

C:\Program Files (x86)\IBM\WebSphere MQ_1\tools\jms\samples\JmsProducer.java

So I have an excellent java program in which to modify

I did not find any .bat files showing how to compile this program

Where can I find documentation on how to compile and invoke the program (what jars and DLL's I need, etc)

Thanks
Back to top
View user's profile Send private message Send e-mail
rekarm01
PostPosted: Wed Mar 20, 2013 1:27 am    Post subject: Re: Error invoking Java JMS program Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 1415

Gideon wrote:
I compile the program with warnings:

Code:
C:\MQClient>"C:\Program Files (x86)\Java\jdk1.6.0_06\bin\"javac -Xlint:deprecation  -classpath jms.jar;com.ibm.mq.jar;dhbcore.jar;connector.jar;com.ibm.mq.jmqi.jar;com.ibm.mqjms.jar;jms.jar Send.java
Send.java:6: warning: [deprecation] com.ibm.mq.jms.JMSC in com.ibm.mq.jms has been deprecated
import com.ibm.mq.jms.JMSC;
                     ^
Send.java:24: warning: [deprecation] com.ibm.mq.jms.JMSC in com.ibm.mq.jms has been deprecated
      cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
                          ^
2 warnings

Sometimes constants get moved to other packages, or renamed. The documentation for MQConnectionFactory.setTransportType() lists the valid types. com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP is now com.ibm.msg.client.wmq.WMQConstants.WMQ_CM_CLIENT .

Gideon wrote:
I get a problem when I invoke the program (Notice there is not a linked list after the error)

For that, the catch handler needs to explicitly call the J2EE JMSException.getLinkedException() method. Fortunately, this is now the same as the J2SE Throwable.getCause() method, so the LinkedException is also available from the stack trace:

Gideon wrote:
Code:
com.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: An exception occurred in the Java(tm) MQI.
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2195;AMQ9546: Error return code received. [1=java.lang.reflect.InvocationTargetException[null],3=NativeConstructorAccessorImpl.newInstance0]
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.NoClassDefFoundError: com.ibm.mq.headers.MQDataException
Caused by: java.lang.ClassNotFoundException: com.ibm.mq.headers.MQDataException

The AMQ9546 and RC=2195 messages don't seem to add much information, but it looks like the class definition for com.ibm.mq.headers.MQDataException is missing. The most likely cause for that is the omission of the com.ibm.mq.headers.jar from the classpath.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » IBM MQ Java / JMS » Error invoking Java JMS program
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.