Yes, I have seen that work directory. I may start fishing in those waters.
I suspect that my own servlets will change fairly often, so dynamic reload is very important to me. I would not be satisfied accepting that this is "the one that got away". > -----Original Message----- > From: Peter Wieland [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, March 19, 2002 2:47 PM > To: [EMAIL PROTECTED] > Subject: Re: Where's my fish? How do I go fishing? (Tomcat 4.0) > > 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]> _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com -- To unsubscribe: <mailto:[EMAIL PROTECTED]> For additional commands: <mailto:[EMAIL PROTECTED]> Troubles with the list: <mailto:[EMAIL PROTECTED]>
