Hello, I just started fishing some weeks ago and I had similar difficulties.
I don't know if there is an elegant way to catch some nice fish, but I can explain you the way I got it to work. I think it is a problem of Tomcats caches. (Not really a problem, because once an application is developped, the servlets won't change very often). Tomcat has a ${tomcat-home}\work directory, were it keeps many files of wich I do not really understand very much. But it happens that after I deleted this directory (or a relevant subpath - for tomcat 3.2 this is something like work\localhost_8080%2Fmyapplication), my changes to servlets were visible. Sometimes a simple restart helped, too. All this fishing experiance was done with Tomcat 3.3 and 3.2 but I think it should be similar with Tomcat 4. Have a fine fish meal. Peter > Hello, > Tomcat 4.0.3 is apparently not reloading a recompiled servlet. According > to the docs, this should be the default behavior. > Interestingly, it WILL load a new servlet. > I have 2 questions, of the "where's my fish" sort and of the "how do I > fish" sort. > Where's my fish: why isn't Tomcat reloading my changed servlet? I have > verified that the class file has changed by checking the timestamp, so > I'm pretty sure it's not a build problem. > How do I fish: what is a reasonable way to troubleshoot this problem? > While I would love to have a fish right now, I am perfectly willing to > learn how to fish and catch my own. > Some fishing I've already done: > 1) tried restarting tomcat. Picks up the new class! > 2) tried restarting the browser. No go. > 3) examined the tomcat logs. Nothing interesting. > 4) examined the servlet class file in the webapps dir. Yup, it sure > changed. > 5) tried adding a second servlet. Tomcat picks it up! > 6) tried changing the second servlet. No go. > I *suspect* that in the murky depths of this problem swims an enormous > caching flounder. Is its name Tomcat 4.0.3? Is it IE 5? Either way, I > want to hook it, filet it, and have it for dinner tonight. > Thanks for your help, > Josh Rehman > Here are some more facts for you: > Hardware: Dell Inspiron 7000 Laptop - P2-366 256M/10G > OS: MS Windows 2000 (NT5) Professional SP2 1024x768x64k > Java: Sun J2SE 1.3.1_01 - c:\java\jdk131 > Tomcat: 4.0.3 - c:\java\jakarta-tomcat-4.0.3 > %CATALINA_HOME%\conf\web.xml is stock > %CATALINA_HOME%\conf\server.xml is stock > Environment variables: > CATALINA_HOME=C:\java\jakarta-tomcat-4.0.3 > JAVA_HOME=c:\java\jdk131_01 > JIKES_HOME=c:\java\jikes114 > ANT_HOME=c:\java\ant14 > Project organization: > Deploy root: %CATALINA_HOME%\webapps\tomcat40 > \WEB-INF\web.xml > \WEB-INF\classes\joshbrain\tomcat40\FirstServlet.class > \WEB-INF\classes\joshbrain\tomcat40\SecondServlet.class > Contents of web.xml: > <!DOCTYPE web-app > PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" > "http://java.sun.com/dtd/web-app_2_3.dtd"> > <web-app> > <display-name>Tomcat 4.0.3 Evaluation Application</display-name> > <description> > This is version 1.0 of a simple evaluation application > written by Josh Rehman ([EMAIL PROTECTED]). > </description> > <context-param> > <param-name>webmaster</param-name> > <param-value>[EMAIL PROTECTED]</param-value> > <description> > The EMAIL address of the administrator to whom questions > and comments about this application should be addressed. > </description> > </context-param> > <servlet> > <servlet-name>first</servlet-name> > <servlet-class>joshbrain.tomcat.FirstServlet</servlet-class> > </servlet> > <servlet> > <servlet-name>second</servlet-name> > <servlet-class>joshbrain.tomcat.SecondServlet</servlet-class> > </servlet> > <servlet-mapping> > <servlet-name>first</servlet-name> > <url-pattern>/first</url-pattern> > </servlet-mapping> > <servlet-mapping> > <servlet-name>second</servlet-name> > <url-pattern>/second</url-pattern> > </servlet-mapping> > <session-config> > <session-timeout>30</session-timeout> <!-- 30 minutes --> > </session-config> > </web-app> > Contents of FirstServlet.java (SecondServlet similar): > /* > * FirstServlet.java > * > * Created on March 18, 2002, 4:56 PM > */ > package joshbrain.tomcat; > import javax.servlet.*; > import javax.servlet.http.*; > /** > * > * @author Josh Rehman > * @version > */ > public class FirstServlet extends HttpServlet > { > public void init(ServletConfig config) throws ServletException > { > super.init(config); > } > protected void processRequest(HttpServletRequest request, > HttpServletResponse response) > throws ServletException, java.io.IOException > { > response.setContentType("text/html"); > java.io.PrintWriter out = response.getWriter(); > out.println("<html>"); > out.println("<head>"); > out.println("<title>Servlet</title>"); > out.println("</head>"); > out.println("<body>"); > out.println("<b>This is the string that will change!</b>"); > out.println("</body>"); > out.println("</html>"); > out.close(); > } > protected void doGet(HttpServletRequest request, HttpServletResponse > response) > throws ServletException, java.io.IOException > { > processRequest(request, response); > } > protected void doPost(HttpServletRequest request, > HttpServletResponse response) > throws ServletException, java.io.IOException > { > processRequest(request, response); > } > } > My ant build script: > <project name="Tomcat 4.0.3 Evaluation" default="compile" basedir="."> > <property file="build.properties"/> > <property file="${user.home}/build.properties"/> > <property name="app.name" value="tomcat40"/> > <property name="app.version" value="1.0"/> > <property name="build.home" value="build"/> > <!--<property name="catalina.home" value="../../../.."/> UPDATE THIS! > --> > <property name="deploy.home" > value="${catalina.home}/webapps/${app.name}"/> > <property name="dist.home" value="dist"/> > <property name="compile.debug" value="true"/> > <property name="compile.deprecation" value="false"/> > <property name="compile.optimize" value="true"/> > <path id="compile.classpath"> > <pathelement location="${catalina.home}/common/classes"/> > <fileset dir="${catalina.home}/common/lib"> > <include name="*.jar"/> > </fileset> > <pathelement location="${catalina.home}/classes"/> > <fileset dir="${catalina.home}/lib"> > <include name="*.jar"/> > </fileset> > </path> > <target name="all" depends="clean,compile" > description="Clean build and dist, then compile"/> > <target name="clean" > description="Delete old build and dist directories"> > <delete dir="${build.home}"/> > <delete dir="${dist.home}"/> > </target> > <target name="compile" depends="prepare" > description="Compile Java sources"> > <!-- Compile Java classes as necessary --> > <mkdir dir="${build.home}/WEB-INF/classes"/> > <javac srcdir="src" > destdir="${build.home}/WEB-INF/classes" > debug="${compile.debug}" > deprecation="${compile.deprecation}" > optimize="${compile.optimize}"> > <classpath refid="compile.classpath"/> > </javac> > <!-- Copy associated resource files --> > <copy todir="${build.home}/WEB-INF/classes"> > <fileset dir="src" includes="**/*.properties"/> > </copy> > </target> > <target name="deploy" depends="compile" > description="Deploy application to servlet container"> > <!-- Copy the contents of the build directory --> > <mkdir dir="${deploy.home}"/> > <copy todir="${deploy.home}"> > <fileset dir="${build.home}"/> > </copy> > </target> > <target name="dist" depends="deploy,javadoc" > description="Create binary distribution"> > <!-- Copy documentation subdirectory --> > <copy todir="${dist.home}/doc"> > <fileset dir="doc"/> > </copy> > <!-- Create application JAR file --> > <jar jarfile="${dist.home}/${app.name}.war" > basedir="${deploy.home}"/> > <!-- Copy additional files to ${dist.home} as necessary --> > </target> > <target name="javadoc" depends="compile" description="Create Javadoc > API documentation"> > <mkdir dir="${dist.home}/doc/api"/> > <javadoc sourcepath="src" > destdir="${dist.home}/doc/api" > packagenames="*"> > <classpath refid="compile.classpath"/> > </javadoc> > </target> > <target name="prepare"> > <!-- Create build directory and copy static content --> > <mkdir dir="${build.home}"/> > <copy todir="${build.home}"> > <fileset dir="web"/> > </copy> > </target> > </project> > Contents of my proj_home\build.properties file: > catalina.home=c\:/java/jakarta-tomcat-4.0.3 > build.compiler=jikes > For development, I am using Netbeans 3.3.1. However, I am NOT using the > integrated Tomcat 3.2 container. > Here are the log contents generated in the following way: > Delete all logs > Start tomcat > Browse to http://localhost:8080/first > Browse to http://localhost:8080/second > Modify FirstServlet > Ant all, ant deploy > Browse to http://localhost:8080/first > Verify no change > Stop tomcat > I have attached the log files to this message. -- To unsubscribe: <mailto:[EMAIL PROTECTED]> For additional commands: <mailto:[EMAIL PROTECTED]> Troubles with the list: <mailto:[EMAIL PROTECTED]>