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

Reply via email to