tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark R. Diggory" <mdigg...@latte.harvard.edu>
Subject Re: Jasper, JSPC, Ant and Precompiling JSP's
Date Mon, 04 Aug 2003 21:04:51 GMT
Bingo! Thats pretty tight. I hadn't thought of using regexp, but I'll 
give this a try, it seems pretty logical. I didn't realize someone had 
contributed a forEach task.

I'd still like to hear about if theres any work ongoing in relation to 
JspC and precompilation of entire webapplications in Tomcat?

thanks again,
Mark


Steph Richardson wrote:

> Mark,
> 
> I have a working solution for pre-compiling jsp, that I am using successfully with all
our tomcat installations. The target looks
> like :
> 
> 	<target name="jspc_preparse" description="Use Jasper2 to parse jsp into java">
> 		<mkdir dir="${webapp.workdir}"/>
> 
> 		<jspc
> 		    srcdir="${webapp.rootdir}"
> 		    destdir="${webapp.workdir}"
> 		    failonerror="false"
> 		    classpathref="jspc_parse.classpath"
> 		    package="org.apache.jsp"
> 		    compiler="jasper41">
> 
> 			<exclude name="**/WEB-INF/**"/>
> 			<exclude name="include/**"/>
> 		</jspc>
> 
> 		<!-- Fix all the package names -->
> 		<replaceregexp
> 			match="^package org.apache.jsp.*;"
> 			replace="package org.apache.jsp;" >
> 			<fileset dir="${webapp.workdir}" >
> 				<include name="**/*.java" />
> 			</fileset>
> 		</replaceregexp>
> 
> 	</target>
> 
> 
> 
> I then use <foreach> from antcontrib to iterate over the directories and compile
them individually.
> Tomcat seems to accept all the resulting class files at runtime with no problems.
> 
> Regards,
> 
> Steph
> 
> 
> 
>>-----Original Message-----
>>From: Steph Richardson [mailto:steph@kvasar.com]
>>Sent: Friday, August 01, 2003 7:06 PM
>>To: Tomcat Users List
>>Subject: RE: Jasper, JSPC, Ant and Precompiling JSP's
>>
>>
>>
>>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.
>><jspc
>>       destdir="${webapp.workdir}"
>>       failonerror="false"
>>       classpathref="jspPreCompile.classpath"
>>       package="org.apache.jsp"
>>       compiler="jasper41">
>>	 <webapp basedir="${webapp.path}"/>
>>     <exclude name="**/WEB-INF/**"/>
>>     <exclude name="include/**"/>
>></jspc>
>>
>>
>>So now I'm trying to make an ant step or task to replace the first line of every generated
_jsp.java file with the correct package
>>name, between generating them and compiling them.
>>Plz met me know if you have something better.
>>
>>
>>Regards,
>>
>>Steph
>>
>>
>>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 [mailto:mdiggory@latte.harvard.edu]
>>>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(ClassLoader.java:502)
>>>	at java.lang.ClassLoader.defineClass(ClassLoader.java:431)
>>>	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 _jsp.java 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/Bam_jsp.java
>>>
>>>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
>>>HMDC
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>>
>>>
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
>>
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 


Mime
View raw message