tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steph Richardson" <>
Subject RE: Jasper, JSPC, Ant and Precompiling JSP's
Date Fri, 01 Aug 2003 23:05:58 GMT

That is EXACTLY what I am trying to do today. I've tooled around in the ant code, and it seems
this is more of a jasper issue than
an ant one, because ant passes a long list of files to jasper, with the unwanted pathnames
that end up as part of your package name.

I'm pretty sure if you used something like <foreach> to iterate through the same fileset
that is being created in the jspc task, and
called jspc for each directory individually, and used the package="org.apache.jsp" attribute,
then this would work - because then
jasper wouldn't know about you're own subdirectory. But this seems ugly so I haven't actually
done it yet.

You can use the webapp element inside jspc, but then jasper doesn't know about your <exclude>
and so tries to compile some
fragment.jsp type include files, that are not really full jsp files, and so it crashes on
those ( this is my current problem ). But
if all your included files are called .inc rather than .jsp then this may work.
	 <webapp basedir="${webapp.path}"/>
     <exclude name="**/WEB-INF/**"/>
     <exclude name="include/**"/>

So now I'm trying to make an ant step or task to replace the first line of every generated file with the correct package
name, between generating them and compiling them.
Plz met me know if you have something better.



PS - if you're from the same HMDC i know, I suspect the site you are trying to pre-compile,
is one I wrote last summer.

> -----Original Message-----
> From: Mark R. Diggory []
> Sent: Friday, August 01, 2003 5:19 PM
> To: Tomcat Users List
> Subject: Jasper, JSPC, Ant and Precompiling JSP's
> Hello,
> I've done my best to review the archives to resolve my problem, but I've
> not found a solution there so I'm posting it.
> I'm stuck back on Tomcat 4.1.24 (LE) and I'm encountering some issues
> with JSP Precompilation using Ant and JSPC. First let me outline my problem.
> Most messages I've read to date focus on using JSP recompiling to turn
> the JSP into Servlets stored in a WAR file and require generating a
> fragment web.xml file and including it into your web.xml, I AM NOT
> trying to do this. I want my JSP's to get precompiled into the work
> directory of Tomcat and used from there, the exact same way that Tomcat
> does it. This way afterward, if the jsp is modified, tomcat can still
> recompile it.
> I have the following jspc and javac tasks coded in my build.xml:
> <mkdir dir="/var/tomcat4/work/Standalone/localhost/Foo"/>
> <jspc srcdir="${deploy.home}"
>        destdir="/var/tomcat4/work/Standalone/localhost/Foo"
>        failonerror="false"
>        compiler="jasper41">
>      <classpath>
>          <!-- snip -->
>      </classpath>
>      <exclude name="**/WEB-INF/**"/>
> </jspc>
> <javac destdir="/var/tomcat4/work/Standalone/localhost/Foo"
>         optimize="off"
>         debug="on" failonerror="false"
>         srcdir="/var/tomcat4/work/Standalone/localhost/Foo"
>         excludes="**/*.smap">
>       <classpath>
>          <!-- snip -->
>       </classpath>
> </javac>
> Both tasks get completed successfully. I observe problems in the package
> names of the JSPC generated java files where the following is the case.
> /var/tomcat/webapps/Foo/Bar/Bam.jsp results in the package name
> package Bar;
> ...
> which becomes a problem when I try to access this JSP included into
> another, I get the following error
> java.lang.NoClassDefFoundError: org/apache/jsp/Bam_jsp (wrong name:
> Bar/Bam_jsp)
> 	at java.lang.ClassLoader.defineClass0(Native Method)
> 	at java.lang.ClassLoader.defineClass(
> 	at java.lang.ClassLoader.defineClass(
> 	at org.apache.jasper.servlet.JasperLoader.loadClass(Unknown Source)
> 	at org.apache.jasper.servlet.JasperLoader.loadClass(Unknown Source)
> 	at org.apache.jasper.JspCompilationContext.load(Unknown Source)
> 	at org.apache.jasper.servlet.JspServletWrapper.getServlet(Unknown Source)
> 	at org.apache.jasper.compiler.Compiler.isOutDated(Unknown Source)
> 	at org.apache.jasper.compiler.Compiler.isOutDated(Unknown Source)
> 	...
> I read somewhere that work had been done on my version (4.1.24) to
> eliminate a naming conflict problem. I assume this is why there are now
> package names on my files.  I find that when I let
> Tomcat/Jasper compile all my jsp's the java files *all* have the package
> name "org.apache.jsp" no matter what their directory. I assume that my
> compilation is conflicting with Tomcats because of the package naming
> differences.
> So, I've tried adding the following attribute package="org.apache.jsp"
> to the jspc task, but this results in even more problems because all the
> package names now look like:
> package org.apache.jsp.Bar;
> and when they are compiled, they end up in a separate directory
> /var/tomcat4/work/Foo/org/apache/jsp/Bar/
> Any ideas or solutions out there would be really helpful for me. I just
> want to have Tomcat start out using my precompiled jsp's instead of
> initially compiling them itself.
> thanks
> Mark Diggory
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

View raw message