DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11784>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11784

Failure in loading class with destroy method of Servlet

           Summary: Failure in loading class with destroy method of Servlet
           Product: Tomcat 4
           Version: 4.0.4 Final
          Platform: PC
        OS/Version: Windows 9x
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Catalina
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


We are implementing Tomcat in our Production environment (on AIX 4.3.3), and 
have been facing a problem. In our Servlet init() function, we load a class 
dynamically using Class.forName(). The class being loaded resides in our WEB-
INF/classes directory. The init() method works fine. But when we load another 
class in our destroy() method, we get a ClassNotFoundException. Both classes 
reside in the same WEB-INF/classes directory.

This problem occurs only when the classes are in WEB-INF/classes directory. If 
we put the classes in a JAR file and place the JAR file in WEB-INF/lib, the 
problem goes away.

I managed to reproduce the problem on my PC (running on Windows 98) by creating 
a small test servlet. The code for the servlet and the helper classes are given 
below:

Try class:
----------

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Try extends HttpServlet {

    public void init() throws ServletException {
        getServletContext().log("Try initialized");
        try {
             Class.forName("Test1");
        }
        catch(Exception e) {
            getServletContext().log("Caught exception" + e);
        }
    }

    public void destroy() {
        getServletContext().log("Try destroyed");
        try {
             Class.forName("Test2");
        }
        catch(Exception e) {
            getServletContext().log("Caught exception" + e);
        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
        response.setContentType("text/plain");
        PrintWriter writer = response.getWriter();
        writer.println("Hello World");
    }
}

Test1 class:
------------
public class Test1 {
        public void sayHello() {
                System.out.println("In Test1");
        }
}

Test2 class:
------------
public class Test2 {

        public void sayHello() {
                System.out.println("In Test2");
        }
}

Output from log file:
---------------------
2002-08-16 23:39:09 StandardHost[localhost]: Installing web application at 
context path /dm from URL file:C:\Program Files\Apache Tomcat 4.0\webapps\dm
2002-08-16 23:39:09 WebappLoader[/dm]: Deploying class repositories to work 
directory C:\Program Files\Apache Tomcat 4.0\work\Standalone\localhost\dm
2002-08-16 23:39:09 StandardManager[/dm]: Seeding random number generator class 
java.security.SecureRandom
2002-08-16 23:39:09 StandardManager[/dm]: Seeding of random number generator 
has been completed
2002-08-16 23:39:09 ContextConfig[/dm]: Missing application web.xml, using 
defaults only
2002-08-16 23:39:09 ContextConfig[/dm]: Added certificates -> request attribute 
Valve
2002-08-16 23:39:09 StandardWrapper[/dm:default]: Loading container servlet 
default
2002-08-16 23:39:09 default: init
2002-08-16 23:39:09 StandardWrapper[/dm:invoker]: Loading container servlet 
invoker
2002-08-16 23:39:09 invoker: init
2002-08-16 23:39:09 jsp: init
2002-08-16 23:39:09 Internal Error: File /WEB-INF/web.xml not found
2002-08-16 23:39:18 org.apache.catalina.INVOKER.Try: init
2002-08-16 23:39:18 Try initialized
2002-08-16 23:39:45 StandardHost[localhost]: Removing web application at 
context path /manager
2002-08-16 23:39:45 StandardHost[localhost]: Removing web application at 
context path /dm
2002-08-16 23:39:45 Try destroyed
2002-08-16 23:39:45 Caught exceptionjava.lang.ClassNotFoundException: Test2

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

Reply via email to