Forget the system classpath.

Are the classes available:

 - in a jar file such as:
webapp\myWebApp\WEB-INF\lib\MyMQClasses.jar
 - or down an exploded path such as:
webapp\myWebApp\WEB-INF\com\path\to\mqclassses

I'd check the specifics how your app server manages CLASSPATH, but I'll bet
if you put the 3rd party files in one of the above two areas, it will work.

FWIW _
Kevin






"Struts Developer" <[EMAIL PROTECTED]> on 04/17/2002 04:48:04
PM

Please respond to "Struts Users Mailing List"
      <[EMAIL PROTECTED]>

To:   [EMAIL PROTECTED]
cc:
Subject:  ActionServlet and NoClassDefFoundErrors


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]>







---------------------------------------------------------------------------
This e-mail message (including attachments, if any) is intended for the use
of the individual or entity to which it is addressed and may contain
information that is privileged, proprietary , confidential and exempt from
disclosure.  If you are not the intended recipient, you are notified that
any dissemination, distribution or copying of this communication is
strictly prohibited.  If you have received this communication in error,
please notify the sender and erase this e-mail message immediately.
---------------------------------------------------------------------------


Reply via email to