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 Wed, 06 Aug 2003 02:01:56 GMT
Ah, o.k. I had misunderstood what that attribute was for in the Ant 
Manual. I will try it and verify if the packaging comes out right.

If I understand correctly, I will still need to walk the directories 
with the forEach task to get them compiled to classes, is this correct?

thanks again for the help,
-Mark

Steph Richardson wrote:
> Mark,
> 
> The jspc task that I used from the standard "Optional Tasks" that come with ant, does
support a webapp parameter, and this works
> fine to compile the whole webapp without any regexp voodoo ( I didn't use it because
it won't allow you to exclude any files ).
> 
> I did see once a conversation on the ant-dev list that complained about how brittle the
jspc task has been to maintain.
> 
> So jasper ( with 4.1.28 ) comes with it's own built in task to completely compile a webapp.
As described here :
> http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jasper-howto.html#Web%20Application%20Compilation
> 
> If you ignore the part about the web.xml fragment, and make sure your output dir is the
same as your Tomcat workdir, then this works
> too ( I think - I did so many experiments my mind is now cloudy ).
> 
> Steph
> 
> 
> 
> 
>>-----Original Message-----
>>From: Mark R. Diggory [mailto:mdiggory@latte.harvard.edu]
>>Sent: Monday, August 04, 2003 5:05 PM
>>To: Tomcat Users List
>>Subject: Re: Jasper, JSPC, Ant and Precompiling JSP's
>>
>>
>>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
>>>
>>
>>
>>---------------------------------------------------------------------
>>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