|
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-2025 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.