|
Hi all, I wrote a MQClientSample.java and I ran on AS/400 with JDK 1.4.2 got following exception: java MQClientSample 172.16.15.28 1415 SYSTEM.DEFAULT.LOCAL.QUEUE NET.CHANNEL AS400 java.lang.NoClassDefFoundError: javax/resource/spi/ConnectionManager at java/lang/Throwable.<init>(Throwable.java:195) at java/lang/Error.<init>(Error.java:49) at java/lang/NoClassDefFoundError.<init>(NoClassDefFoundError.java:40 ) at com/ibm/mq/MQEnvironment.<clinit>(MQEnvironment.java:110) at MQClientSample.<init>(MQClientSample.java:22) at MQClientSample.main(MQClientSample.java:269) But if I specified JDK 1.3, java -Djava.version=1.3 MQClientSample 172.16.15.28 1415 SYSTEM.DEFAULT.LOCAL.QUEUE NET.CHANNEL AS400 Normal exit. But If I ran the java program on PC with JDK 1.4.2, no exception. What's problem with JDK 1.4.2 on AS/400 ? Could you help me to solve it ? Best regards, Vengoal Source as following: // On AS/400: // set ADDENVVAR CLASSPATH '.:/QIBM/ProdData/mqm/java/lib/com.ibm.mq.jar' // java -Djava.version=1.3 MQClientSample 172.16.15.28 1415 SYSTEM.DEFAULT. LOCAL.QUEUE NET.CHANNEL AS400 // On PC // set CLASSPATH = %CLASSPATH%;C:\IBM\java\lib\com.ibm.mq.jar // java MQClientSample import com.ibm.mq.*; // Include the WebSphere MQ class for Java package public class MQClientSample { private String hostname; // define the name of your host to connect to private String channel; // define name of channel for client to use private String qManager; // define name of queue manager object to private MQQueueManager qMgr; // define a queue manager object public MQClientSample(String hostname, int port, String channel, String qmanager) { // When the class is called, this initialization is done first. // Set up MQ environment MQEnvironment.hostname = hostname; // Could have put the hostname & channel MQEnvironment.channel = channel; // string directly here! MQEnvironment.port = port; MQEnvironment.CCSID = 950; qManager = qmanager; } public void ConnectQmgr() { try { // Create a connection to the queue manager qMgr = new MQQueueManager(qManager); } // If an error has occured in the above, try to identify what went wrong. // Was it an MQ error? catch (MQException ex) { System.out.println("An MQ error occurred : Completion code " + ex.completionCode + " Reason code " + ex.reasonCode); } } public MQQueue openQ(String qName) { MQQueue queue = null; try { int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT ; queue = qMgr.accessQueue(qName, openOptions); } catch (MQException ex) { System.out.println("An MQ error occurred : Completion code " + ex.completionCode + " Reason code " + ex.reasonCode); } return queue; } public void closeQ(MQQueue queue) { try { queue.close(); } catch (MQException ex) { System.out.println("An MQ error occurred : Completion code " + ex.completionCode + " Reason code " + ex.reasonCode); } } public void disconnectQmgr() { try { qMgr.disconnect(); } catch (MQException ex) { System.out.println("An MQ error occurred : Completion code " + ex.completionCode + " Reason code " + ex.reasonCode); } } public void putMsg(MQQueue queue, String msgStr, int characterSet) { MQMessage mqmessage = null; try { mqmessage = new MQMessage(); mqmessage.format = MQC.MQFMT_STRING; mqmessage.characterSet = characterSet; mqmessage.writeString(msgStr); MQPutMessageOptions pmo = new MQPutMessageOptions(); queue.put(mqmessage,pmo); } catch (MQException ex) { System.out.println("An MQ error occurred : Completion code " + ex.completionCode + " Reason code " + ex.reasonCode); } // Was it a Java buffer space error? catch (java.io.IOException ex) { System.out.println("An error occurred whilst writing to the message buffer: " + ex); ex.printStackTrace(); } } public String getMsg(MQQueue queue, int wait) { String msgText=null; MQMessage retrievedMessage = null; try { retrievedMessage = new MQMessage(); MQGetMessageOptions gmo = new MQGetMessageOptions(); if (wait > 0) { gmo.options= MQC.MQGMO_WAIT; gmo.waitInterval = wait; } queue.get(retrievedMessage, gmo); int msgLen = retrievedMessage.getTotalMessageLength(); byte as400data[] = new byte [msgLen]; retrievedMessage.readFully(as400data); if (retrievedMessage.characterSet == 937) { msgText = new String(as400data,"Cp937"); } if (retrievedMessage.characterSet == 950) { msgText = new String(as400data,"Cp950"); } } catch (MQException ex) { System.out.println("An MQ error occurred : Completion code " + ex.completionCode + " Reason code " + ex.reasonCode); } // Was it a Java buffer space error? catch (java.io.IOException ex) { System.out.println("An error occurred whilst writing to the message buffer: " + ex); ex.printStackTrace(); } return msgText; } public void MQClientPutGet() { try { // Create a connection to the queue manager qMgr = new MQQueueManager(qManager); // Set up the options on the queue we wish to open... // Note. All MQ Options are prefixed with MQC in Java. int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT ; // Now specify the queue that we wish to open, and the open options... MQQueue system_default_local_queue = qMgr.accessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE", openOptions, null, // default q manager null, // no dynamic q name null); // no alternate user id // Define a simple MQ message, and initialise it in UTF format.. MQMessage hello_world = new MQMessage(); hello_world.format = MQC.MQFMT_STRING; hello_world.characterSet = 950; hello_world.writeString("Hello World!你好"); System.out.println("After Writing ..."); // specify the message options... MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the defaults, same // as MQPMO_DEFAULT constant // put the message on the queue system_default_local_queue.put(hello_world,pmo); // get the message back again... // First define a MQ message buffer to receive the message into.. MQMessage retrievedMessage = new MQMessage(); retrievedMessage.messageId = hello_world.messageId; // Set the get message options.. MQGetMessageOptions gmo = new MQGetMessageOptions(); // accept the defaults // same as MQGMO_DEFAULT // get the message off the queue.. System.out.println("before Read ..."); system_default_local_queue.get(retrievedMessage, gmo, 100); // max message size // And prove we have the message by displaying the UTF message text int msgLen = retrievedMessage.getTotalMessageLength(); byte as400data[] = new byte [msgLen]; retrievedMessage.readFully(as400data); String msgText=null; if (retrievedMessage.characterSet == 937) { msgText = new String(as400data,"Cp937"); } if (retrievedMessage.characterSet == 950) { msgText = new String(as400data,"Cp950"); } //String msgText = retrievedMessage.readUTF(); //String msgText = retrievedMessage.readString(msgLen); System.out.println("After Read ..."); System.out.println("The message is: " + msgText); // Close the queue system_default_local_queue.close(); // Disconnect from the queue manager qMgr.disconnect(); } // If an error has occured in the above, try to identify what went wrong. // Was it an MQ error? catch (MQException ex) { System.out.println("An MQ error occurred : Completion code " + ex.completionCode + " Reason code " + ex.reasonCode); } // Was it a Java buffer space error? catch (java.io.IOException ex) { System.out.println("An error occurred whilst writing to the message buffer: " + ex); } } // end MQclientPutGet public static void main(String args[]) { System.out.println("Usage: java MQClientSample host port openqueue channel qmanager"); // String hostname = "172.16.15.28"; // String channel = "NET.CHANNEL"; // String qmanager = "AS400"; // int port =1415; String hostname = args[0]; String openqueue = args[2]; String channel = args[3]; String qmanager = args[4]; int port = Integer.parseInt(args[1]); MQClientSample mqclient = new MQClientSample(hostname, port, channel, qmanager); // mqclient.MQClientPutGet(); mqclient.ConnectQmgr(); MQQueue queue = mqclient.openQ(openqueue); mqclient.putMsg(queue, "Hello World!你好", 950); String msgText = mqclient.getMsg(queue,0); System.out.println("The message is: " + msgText); mqclient.closeQ(queue); mqclient.disconnectQmgr(); System.exit(0); } } // end of sample
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.