You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Arieh Markel <Ar...@central.sun.com> on 2000/08/25 22:42:04 UTC

More problems with migration to 3.2

Here is a stack trace for an exception from a servlet that used to
work on 3.1.

The servlet is a /launch servlet.

Invocation of the servlet is as follows:

	http:<host>/launch?node=<nodeid>
	
Based on the 'nodeid', an object search is done and a reference (actually
a remote reference) is obtained for that object.

A specific servlet that is matched to the class of the referenced object
is identified. If it has not been created, it will be instantiated and
added to the 'dynamic' context.

The /launch servlet will perform a 'forward' to the servlet selected.

The following is the code that performs that:


                if (null != servInfo[0])
                {
                    String servletPath = servInfo[0] +
                        "?" + Constants.URLAttribute.Node + "=" + 
                                URLEncoder.encode (node) +
                        "&" + Constants.URLAttribute.Family + "=" + 
                                URLEncoder.encode (familyName) +
                        "&" + Constants.URLAttribute.Session + "=" + sessionId;

                    ServletContext sctx = getServletContext();
                    RequestDispatcher rd = null;

                    if (null != sc.getServletByName (servInfo[0]))
                    {
                        ServletContext lc = sctx.getContext(servletPath);
                        rd = lc.getRequestDispatcher(servletPath);
                    }

                    //  if there has never been a dispatcher established
                    //  for the servlet path, we will install the servlet
                    //
                    boolean goodInstall = false;
                    if (rd == null)
                    {
                        goodInstall = ServletMgr.installServlet (servInfo[0],
                                                            servInfo[1], sc);

                        if (goodInstall)
                        {
                            ServletContext lc = sctx.getContext(servletPath);
                            rd = lc.getRequestDispatcher(servletPath);
                        }
                    }

The exception below occurs in the 'lc.getRequestDispatcher(servletPath)'
statement:


Error: 500

Location:/launch

Internal Servlet Error:

java.lang.NoClassDefFoundError: org/apache/tomcat/facade/RequestDispatcherImpl
        at 
org.apache.tomcat.facade.ServletContextFacade.getRequestDispatcher(ServletContex
tFacade.java:157)
        at com.sun.esm.web.console.launch.Launch.redirect(Launch.java:129)
        at com.sun.esm.web.console.launch.Launch.doGet(Launch.java:320)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at com.sun.esm.web.servlet.CMCServlet.service(CMCServlet.java:395)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at 
org.apache.tomcat.facade.ServletWrapper.doService(ServletWrapper.java:417)
        at 
org.apache.tomcat.facade.ServletWrapper.doService(ServletWrapper.java:404)
        at org.apache.tomcat.core.Handler.service(Compiled Code)
        at 
org.apache.tomcat.facade.ServletWrapper.service(ServletWrapper.java:387)
        at org.apache.tomcat.core.ContextManager.internalService(Compiled Code)
        at org.apache.tomcat.core.ContextManager.service(Compiled Code)
        at 
org.apache.tomcat.service.http.HttpInterceptor.processConnection(Compiled Code)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(Compiled Code)
        at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(Compiled Code)
        at java.lang.Thread.run(Compiled Code)
        

I checked my CLASSPATH and invoked 'javap' on the environment on which
I start Tomcat, and I can find the RequestDispatcherImpl class.
It is not clear to me why the class is not found.

----

On the problem I sent earlier.

I proceeded to try to access the application servlets and webpages from
the HttpInterceptor (which I assume is not a PoolTcpConnector) and I am
able to have more of the content displayed.

----

Have any changes been done to the PrintWriter that is found on the
HttpServletRequest ?

My traces show that the code goes through the statements that should
be outputting to the HTTP connection, yet nothing is displayed.




Thanks,

Arieh
--
 Arieh Markel		                Sun Microsystems Inc.
 Network Storage                        500 Eldorado Blvd. MS UBRM11-194
 e-mail: arieh.markel@sun.COM           Broomfield, CO 80021
 Let's go Panthers !!!!                 Phone: (303) 272-8547 x78547
 (e-mail me with subject SEND PUBLIC KEY to get public key)