Greetings All,

This is probably a dumb question, and being this close to Friday will 
generate short flippant answers, but here goes anyway…

I have a need to communicate via IBM MQSeries to a legacy application. This 
application has a listener that monitors the queue and posts events in the 
legacy application based on messages it reads from said queue.

I have successfully tested putting messages on the queue from a java class. 
However when I try to call my MessageManager class from my Action class all 
I ever get is a NoClassDefFoundError.

The MessageManager class imports all the necessary MQ packages, and it also 
catches all MQ exceptions and throws a “MessageManagerException” instead. I 
have a test driver that calls this class (independent of my ActionServlet), 
and I can successfully call it all day long.

However, as soon as I try to make the call from my Action subclass I get the 
NoClassDefFoundError.

Why, when I call my MessageManager from my test class, does it work, but 
when I call it from my Action class it fails?

If anyone has any ideas please let me know. The source is posted below.
Thanks in advance,
Mark N.

============================
ForteMessageManager class
============================
package dhs.vcm.forte.messaging;


import com.ibm.mq.*;


/*  There are three jar files required in the workspace
        com.ibm.mq.jar
        com.ibm.mq.iiop.jar
        com.ibm.mqbind.jar
        These should all be in the java/lib directory where MQ client is installed.
        The mqbind.jar file isn't used except for class definitions and was only
        found in the 5.2 installation of MQ Client.
*/

//----------------------------------------------------- ForteMessageManager
public class ForteMessageManager {



//----------------------------------------------------- putMessage
        public static void putMessage(String msg)
                throws ForteMessageException {


                try {

                        System.out.println("ForteMessageManager.putMessage ... about 
to establish 
Connection pool") ;
                        ForteMessageConnectionPool messagePool = new 
ForteMessageConnectionPool();

                        // open the queue
                        System.out.println("ForteMessageManager.putMessage ... about 
to open 
queue") ;
                        MQQueue myQueue = messagePool.getConnection(1);

                        // Define a simple MQSeries message, and put message text
                        System.out.println("ForteMessageManager.putMessage ... about 
to define 
message ") ;
                        MQMessage myMessage = new MQMessage();
                        myMessage.writeUTF(msg);

                        // specify the message options...
                        System.out.println("ForteMessageManager.putMessage ... about 
to specify 
message options") ;
                        MQPutMessageOptions pmo = new MQPutMessageOptions();  // 
accept the 
defaults, use MQPMO_DEFAULT constant

                        // put the message on the queue
                        System.out.println("ForteMessageManager.putMessage ... about 
to place 
message on queue") ;
                        myQueue.put(myMessage,pmo);

                        // Close the queue
                        System.out.println("ForteMessageManager.putMessage ... about 
to close the 
queue") ;
                        messagePool.releaseConnection(myQueue);


                } catch (ForteMessageException ex) {
                } catch (MQException ex) {
                        ForteMessageException newEx = new 
ForteMessageException(ex.getMessage());
                        newEx.setCompletionCode(ex.completionCode);
                        newEx.setReasonCode(ex.reasonCode);
                        throw newEx;
                } catch (java.io.IOException ex) {
                        throw new ForteMessageException(ex.getMessage());
                }


        }



//----------------------------------------------------- getMessage
        public static String getMessage()
                throws ForteMessageException {


                String msgText = null;

                try {

                        ForteMessageConnectionPool messagePool = new 
ForteMessageConnectionPool();

                        // open the queue
                        MQQueue myQueue = messagePool.getConnection(1);

                        // Define a MQSeries message buffer to receive the message 
into..
                        MQMessage retrievedMessage = new MQMessage();

                        // Set the get message options..
                        MQGetMessageOptions gmo = new MQGetMessageOptions();  // 
accept the 
defaults, use MQGMO_DEFAULT constant

                        // get the message off the queue..
                        myQueue.get(retrievedMessage, gmo);

                        // set the return value
                        msgText = retrievedMessage.readUTF();

                        // Close the queue
                        messagePool.releaseConnection(myQueue);


                } catch (ForteMessageException ex) {
                } catch (MQException ex) {
                        ForteMessageException newEx = new 
ForteMessageException(ex.getMessage());
                        newEx.setCompletionCode(ex.completionCode);
                        newEx.setReasonCode(ex.reasonCode);
                        throw newEx;
                } catch (java.io.IOException ex) {
                        throw new ForteMessageException(ex.getMessage());
                }

                return msgText;


        } // end of mqTest

//----------------------------------------------------- ForteMessageManager 
- end
}


=============================
Action Class sample
=============================
package dhs.vcm.vis.action;

//  -------------------------------------------------------------- Java 
Includes
import java.io.IOException;
import java.util.Hashtable;
import java.util.Locale;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;

//  -------------------------------------------------------------- Struts 
Includes
import org.apache.struts.action.ActionForm ;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.MessageResources;

//  -------------------------------------------------------------- DHS 
Imports
import dhs.vcm.forte.messaging.* ;
import dhs.vcm.vis.business.* ;
import dhs.vcm.vis.entity.* ;
import dhs.vcm.vis.form.* ;
import dhs.vcm.vis.struts.action.VISAction ;
import dhs.vcm.vis.util.* ;

public class EnterVisitorActionDisplay extends VISAction {

        public ActionForward perform(
                ActionMapping mapping,
                ActionForm form,
                HttpServletRequest request,
                HttpServletResponse response)
                throws IOException, ServletException {

                writeToLog("   EnterVisitorActionDisplay : perform : entered") ;

                // Extract attributes we will need
                Locale locale = getLocale(request);
                MessageResources messages = getResources();
                HttpSession session = request.getSession();

                writeToLog("   EnterVisitorActionDisplay : perform : posting message") 
;

                // Call Forte Message Manager passing it the request to display proper 
window
                messageToPost = "dhsv022910BeginRegisterVisitor" ;
                putMessageToQueue(messageToPost) ;

                writeToLog("   EnterVisitorActionDisplay : perform : leaving now") ;

                // Forward control to the specified success URI
                return (mapping.findForward("enterVisitor"));
        }

}

============================
Action superclass
============================
package dhs.vcm.struts.action;

//  -------------------------------------------------------------- DHS 
imports
import dhs.struts.action.DHSAction ;
import dhs.vcm.forte.messaging.ForteMessageException ;
import dhs.vcm.forte.messaging.ForteMessageManager ;

import dhs.vcm.vis.business.ForteMessageProxy ;

public class VCMAction extends dhs.struts.action.DHSAction {

        public void putMessageToQueue(
                String messageToPost) {

                        writeToLog("   VCMAction.putMessageToQueue entered... about to 
post 
message") ;

                        ForteMessageManager.putMessage(messageToPost) ;

                }


        public void getMessageFromQueue(){

                                try {
                                String myMsg = ForteMessageManager.getMessage();
                                writeToLog(myMsg);

                                } catch (ForteMessageException ex) {
                                }


                }


}






_________________________________________________________________
MSN Photos is the easiest way to share and print your photos: 
http://photos.msn.com/support/worldwide.aspx


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to