You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Mark R. Diggory" <md...@latte.harvard.edu> on 2003/08/01 23:19:28 UTC

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


RE: Jasper, JSPC, Ant and Precompiling JSP's

Posted by Steph Richardson <st...@kvasar.com>.
Mark,

On compiling the _jsp.java files - yes I had to use <foreach> . And then because <javac> works recursively on whatever directory you
point it at ( now that every file is in the same package ), I had  to move the contents of each dir to a tempdir, compile the
tempdir, move classfiles back. Full ( and long ) example below :

Steph

	<!-- Translate and compile all jsp files for current web app -->
	<target name="jspc" depends="tomcat-setworkdir,jspc_preparse">
		<foreach target="jspc_compile" param="param.jspdir" >
			<path>
				<dirset dir="${webapp.workdir}">
				</dirset>
			</path>
		</foreach>
	</target>



	<!-- Use Jasper2 to parse jsp into java -->
	<target name="jspc_preparse" description="Use Jasper2 to parse jsp into java">
		<mkdir dir="${webapp.workdir}"/>

		<jspc
			srcdir="${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>


	<target name="jspc_compile" description="Compiling _jsp.java files for one tomcat directory">
		<echo message="jspc_compile called for ${param.jspdir}" />

		<property name="tempbuild" value="${rootdir}/WEB-INF/temp/src" />

		<mkdir dir="${tempbuild}" />
		<copy todir="${tempbuild}" >
			<fileset dir="${param.jspdir}" >
				<include name="*.java" />
			</fileset>
		</copy>

	    <javac srcdir="${tempbuild}"
			destdir="${tempbuild}"
	        optimize="off"
	        debug="on"
	        failonerror="true">

	      <classpath>
	        <path refid="build.classpath" />
	        <pathelement location="${tomcat.home}/common/classes"/>
	        <fileset dir="${tomcat.home}/common/lib">
	          <include name="*.jar"/>
	        </fileset>
	        <pathelement location="${tomcat.home}/shared/classes"/>
	        <fileset dir="${tomcat.home}/shared/lib">
	          <include name="*.jar"/>
	        </fileset>
	      </classpath>
	    </javac>

		<available property="package.created" file="${tempbuild}/org/apache/jsp" />

		<!-- If no jsp / java files in this dir, then skip move because it would fail -->
		<if>
			<istrue value="${package.created}" />
			<then>
				<move todir="${param.jspdir}">
					<fileset dir="${tempbuild}/org/apache/jsp" />
				</move>
			</then>
			<else>
				<echo message="No java files to compile in ${param.jspdir}" />
			</else>
		</if>

		<delete dir="${tempbuild}" quiet="true"/>
	</target>










> -----Original Message-----
> From: Mark R. Diggory [mailto:mdiggory@latte.harvard.edu]
> Sent: Tuesday, August 05, 2003 10:02 PM
> To: Tomcat Users List
> Subject: Re: Jasper, JSPC, Ant and Precompiling JSP's
>
>
> 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
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>
>


RE: Jasper, JSPC, Ant and Precompiling JSP's

Posted by Steph Richardson <st...@kvasar.com>.
Mark,

On compiling the _jsp.java files - yes I had to use <foreach> . And then because <javac> works recursively on whatever directory you
point it at ( now that every file is in the same package ), I had  to move the contents of each dir to a tempdir, compile the
tempdir, move classfiles back. Full ( and long ) example below :

Steph

	<!-- Translate and compile all jsp files for current web app -->
	<target name="jspc" depends="tomcat-setworkdir,jspc_preparse">
		<foreach target="jspc_compile" param="param.jspdir" >
			<path>
				<dirset dir="${webapp.workdir}">
				</dirset>
			</path>
		</foreach>
	</target>



	<!-- Use Jasper2 to parse jsp into java -->
	<target name="jspc_preparse" description="Use Jasper2 to parse jsp into java">
		<mkdir dir="${webapp.workdir}"/>

		<jspc
			srcdir="${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>


	<target name="jspc_compile" description="Compiling _jsp.java files for one tomcat directory">
		<echo message="jspc_compile called for ${param.jspdir}" />

		<property name="tempbuild" value="${rootdir}/WEB-INF/temp/src" />

		<mkdir dir="${tempbuild}" />
		<copy todir="${tempbuild}" >
			<fileset dir="${param.jspdir}" >
				<include name="*.java" />
			</fileset>
		</copy>

	    <javac srcdir="${tempbuild}"
			destdir="${tempbuild}"
	        optimize="off"
	        debug="on"
	        failonerror="true">

	      <classpath>
	        <path refid="build.classpath" />
	        <pathelement location="${tomcat.home}/common/classes"/>
	        <fileset dir="${tomcat.home}/common/lib">
	          <include name="*.jar"/>
	        </fileset>
	        <pathelement location="${tomcat.home}/shared/classes"/>
	        <fileset dir="${tomcat.home}/shared/lib">
	          <include name="*.jar"/>
	        </fileset>
	      </classpath>
	    </javac>

		<available property="package.created" file="${tempbuild}/org/apache/jsp" />

		<!-- If no jsp / java files in this dir, then skip move because it would fail -->
		<if>
			<istrue value="${package.created}" />
			<then>
				<move todir="${param.jspdir}">
					<fileset dir="${tempbuild}/org/apache/jsp" />
				</move>
			</then>
			<else>
				<echo message="No java files to compile in ${param.jspdir}" />
			</else>
		</if>

		<delete dir="${tempbuild}" quiet="true"/>
	</target>










> -----Original Message-----
> From: Mark R. Diggory [mailto:mdiggory@latte.harvard.edu]
> Sent: Tuesday, August 05, 2003 10:02 PM
> To: Tomcat Users List
> Subject: Re: Jasper, JSPC, Ant and Precompiling JSP's
>
>
> 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
> >
>
>
> ---------------------------------------------------------------------
> 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


Re: Jasper, JSPC, Ant and Precompiling JSP's

Posted by "Mark R. Diggory" <md...@latte.harvard.edu>.
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
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Re: Jasper, JSPC, Ant and Precompiling JSP's

Posted by "Mark R. Diggory" <md...@latte.harvard.edu>.
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
> 


RE: Jasper, JSPC, Ant and Precompiling JSP's

Posted by Steph Richardson <st...@kvasar.com>.
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
>
>
>


RE: Jasper, JSPC, Ant and Precompiling JSP's

Posted by Steph Richardson <st...@kvasar.com>.
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


Re: Jasper, JSPC, Ant and Precompiling JSP's

Posted by "Mark R. Diggory" <md...@latte.harvard.edu>.
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
> 


Re: Jasper, JSPC, Ant and Precompiling JSP's

Posted by "Mark R. Diggory" <md...@latte.harvard.edu>.
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


RE: Jasper, JSPC, Ant and Precompiling JSP's

Posted by Steph Richardson <st...@kvasar.com>.
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
>
>
>


RE: Jasper, JSPC, Ant and Precompiling JSP's

Posted by Steph Richardson <st...@kvasar.com>.
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


RE: Jasper, JSPC, Ant and Precompiling JSP's

Posted by Steph Richardson <st...@kvasar.com>.
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


RE: Jasper, JSPC, Ant and Precompiling JSP's

Posted by Steph Richardson <st...@kvasar.com>.
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
>
>
>