tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bernhard Slominski <bernhard.slomin...@zooplus.com>
Subject AW: jspServlet runs out of memory while compiling some jsp files using fork=true
Date Fri, 27 May 2005 13:32:04 GMT
Well the precompliation is quite simple:
You use an ant jasper task to make the java file from your jsp and then
compile these classes.
Then you do a mapping from the jsp to the class.
This is all done on a separate machine, I do the deployment as war file,
which is copied accross to the live machine.
It can all be done automatically.
Look at http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jasper-howto.html

I post you the code from my buildfile.
The only thing is that you have to reload your app when you do this, so that
might be a problem for you.

	<target name="jspc" depends="get-properties-stage"> 
		<mkdir dir="${webapproot}/src"/>

		<!-- define the jasper task -->
   		<taskdef classname="org.apache.jasper.JspC" name="jasper2" >

      			<classpath id="jspc.classpath"> 
		        	<pathelement
location="${java.home}/../lib/tools.jar"/> 
	        		<fileset dir="${tomcat.home}/bin"> 
	        			<include name="*.jar"/> 
	        		</fileset> 
		        	<fileset dir="${tomcat.home}/server/lib"> 
        				<include name="*.jar"/> 
		        	</fileset> 
        			<fileset dir="${tomcat.home}/common/lib"> 
          				<include name="*.jar"/> 
	        		</fileset>
                		<fileset
dir="${webapproot}${webappname}/WEB-INF/lib"> 
                    			<include name="*.jar"/>
                		</fileset>
      			</classpath>
    		</taskdef> 

		<!-- execute jasper, creates the servlet source files -->
    		<jasper2 
             		validateXml="false" 
             		uriroot="${webapproot}${webappname}" 
 
webXmlFragment="${webapproot}${webappname}/WEB-INF/generated_web.xml" 
             		outputDir="${webapproot}/src" /> 

		<!-- compile the source files -->
    		<javac destdir="${webapproot}${webappname}/WEB-INF/classes"
           		optimize="off"
           		debug="on" failonerror="false"
           		srcdir="${webapproot}/src" 
	   		excludes="**/*.smap">
      			<classpath>
        			<pathelement
location="${webapproot}${webappname}/WEB-INF/classes"/>
			        <pathelement
location="${tomcat.home}/common/classes"/>
        			<pathelement
location="${tomcat.home}/shared/classes"/>
			        <fileset dir="${tomcat.home}/common/lib">
			         	<include name="*.jar"/>
			        </fileset>
        			<fileset dir="${tomcat.home}/shared/lib">
          				<include name="*.jar"/>
			        </fileset>
			        <fileset dir="${tomcat.home}/bin"> 
			        	<include name="*.jar"/> 
			        </fileset> 
        			<fileset
dir="${webapproot}${webappname}/WEB-INF/lib"> 
			        	<include name="*.jar"/>
        			</fileset>
      			</classpath>
      			<include name="**" />
      			<exclude name="tags/**" />
    		</javac>

		<!-- Load your precompiled snippet into a property -->
		<loadfile property="precompiled"
	
srcFile="${webapproot}${webappname}/WEB-INF/generated_web.xml"
           		encoding="ISO-8859-1"/>

		<!-- Now replace the web.xml with a predifined snippet -->
		<replace file="${webapproot}${webappname}/WEB-INF/web.xml"
value="${precompiled}">
     			<replacetoken><![CDATA[<!-- precompile include
-->]]></replacetoken>
   		</replace>
  	</target> 






> -----Ursprüngliche Nachricht-----
> Von: Vesa Varimo [mailto:vesa.varimo@jippii.com]
> Gesendet: Freitag, 27. Mai 2005 15:16
> An: Tomcat Users List
> Betreff: Re: jspServlet runs out of memory while compiling some jsp
> files using fork=true
> 
> 
> 
> Hmh.. how does you deployment script work? Do you compile jsp 
> pages in some 
> other server than the live server?
> 
> Well, I didn't write those pages :), I just have to live with 
> legacy code :D
> 
> 
> Vesa
> 
> ----- Original Message ----- 
> From: "Bernhard Slominski" <bernhard.slominski@zooplus.com>
> To: "'Tomcat Users List'" <tomcat-user@jakarta.apache.org>
> Sent: Friday, May 27, 2005 4:02 PM
> Subject: AW: jspServlet runs out of memory while compiling 
> some jsp files 
> using fork=true
> 
> 
> Hi,
> 
> I think it happens randomly because it depends on the actual 
> load on the
> server.
> Where there is not much traffic it's OK, but with more 
> traffic the server
> runs out of memomry.
> I see your point that you cannot "control" the webmasters.
> But still with the problems you have and the obvious very big 
> application
> with 10000 lines in a JSP (this must we a horror to maintain 
> the code) and
> hundreds of jars you should have a proper deployment process 
> and not just
> copying JSPs across.
> It does not mean that it's more complicated, I implemented this in my
> company with an ant script and it's really simple, stable and 
> secure. Nobody
> want's to go back to the old copy "solution".
> 
> Cheers
> 
> Bernhard
> 
> > -----Ursprüngliche Nachricht-----
> > Von: Vesa Varimo [mailto:vesa.varimo@jippii.com]
> > Gesendet: Freitag, 27. Mai 2005 14:59
> > An: Tomcat Users List
> > Betreff: Re: jspServlet runs out of memory while compiling some jsp
> > files using fork=true
> >
> >
> >
> > Hi,
> >
> > no the webapp is running whole time without redeployments.
> > The jsp pages are quite large, 5000-10000 rows and there are
> > many of them.
> > Can this affect to memory usage of javac compiler?
> > This is a strange problem, because sometimes these same pages
> > compile just
> > fine, sometimes they don't.
> >
> >
> > Thx,
> >
> > Vesa
> >
> > ----- Original Message ----- 
> > From: "Steve Kirk" <tomcat-user@web-startup.co.uk>
> > To: "'Tomcat Users List'" <tomcat-user@jakarta.apache.org>
> > Sent: Friday, May 27, 2005 3:32 PM
> > Subject: RE: jspServlet runs out of memory while compiling
> > some jsp files
> > using fork=true
> >
> >
> > Is the problem caused because you redeploy the whole webapp 
> each time?
> > Could you just deploy only those files that have changed?  I
> > can't imagine
> > that this leads to overloading unless the numbers are massive...?
> >
> > > -----Original Message-----
> > > From: Vesa Varimo [mailto:vesa.varimo@jippii.com]
> > > Sent: Friday 27 May 2005 13:34
> > > To: Tomcat Users List
> > > Subject: Re: jspServlet runs out of memory while compiling
> > > some jsp files using fork=true
> > >
> > >
> > >
> > > Yes, that would be one solution, but not suitable for our
> > > case because our
> > > webmasters are constantly updating jsp pages on our
> > > production servers.
> > > Btw. I'm using tomcat 5.0.28.
> > >
> > > Thx,
> > >
> > > Vesa
> > >
> > > ----- Original Message ----- 
> > > From: "Bernhard Slominski" <bernhard.slominski@zooplus.com>
> > > To: "'Tomcat Users List'" <tomcat-user@jakarta.apache.org>
> > > Sent: Friday, May 27, 2005 3:25 PM
> > > Subject: AW: jspServlet runs out of memory while compiling
> > > some jsp files
> > > using fork=true
> > >
> > >
> > > Hi,
> > >
> > > I would suggest that you do a precompilation of your jsps on
> > > a deployment
> > > machine which is separate from the live machine.
> > > So your compilation is not done on the live server, which
> > > might be on heavy
> > > load.
> > > Also you don't have the problem that the first visitor has to
> > > wait an awful
> > > long time until the page get's displayed.
> > >
> > > Cheers
> > >
> > > Bernhard
> > >
> > > > -----Ursprüngliche Nachricht-----
> > > > Von: Vesa Varimo [mailto:vesa.varimo@jippii.com]
> > > > Gesendet: Freitag, 27. Mai 2005 12:45
> > > > An: tomcat-user@jakarta.apache.org
> > > > Betreff: jspServlet runs out of memory while compiling some
> > > jsp files
> > > > using fork=true
> > > >
> > > >
> > > > Hi,
> > > >
> > > > I'm having OutOfMemory error while Tomcat tries to compile
> > > > jsp files. The problem occures few times in day so it's quite
> > > > hard to repeat.
> > > > Tomcat is configured to run javac in separate JVM with
> > > > fork=true option. I tried to give more memory for ant using
> > > > ANT_OPTS, but it didn't help.
> > > > I read source code for the jasper compiler and there are
> > > > variables that configure how much memory is given to ant, but
> > > > I'm not able to configure them
> > > > with jspServlet init parameters.
> > > >
> > > > How should I resolved this? Is the Jikes compiler a solution
> > > > worth of trying?
> > > >
> > > > Stacktrace included below. I have hundreds of jars in
> > > > classpath... so I can't paste the whole compiler output.
> > > >
> > > > BR,
> > > >
> > > > Vesa Varimo
> > > > vesa.varimo@jippii.com
> > > >
> > > > --------------------------------------------------------------
> > > > ------------------
> > > >
> > > > 2005-05-26 21:42:53 StandardWrapperValve[jsp]:
> > > > Servlet.service() for servlet jsp threw exception
> > > > java.lang.OutOfMemoryError
> > > >
> > > > May 7, 2005 12:21:42 PM org.apache.jasper.compiler.Compiler
> > > > generateClass
> > > > SEVERE: Javac exception
> > > > Compile failed; see the compiler error output for details.
> > > >         at
> > > org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:944)
> > > >         at
> > > org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:764)
> > > >         at
> > > >
> > org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:379)
> > > >         at
> > > > org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
> > > >         at
> > > > org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
> > > >         at
> > > > org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
> > > >         at
> > > > org.apache.jasper.JspCompilationContext.compile(JspCompilation
> > > > Context.java:511)
> > > >         at
> > > > org.apache.jasper.servlet.JspServletWrapper.service(JspServlet
> > > > Wrapper.java:295)
> > > >         at
> > > > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> > > > .java:292)
> > > >         at
> > > > 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
> > > >         at
> > > > javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > >         at
> > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> > > > er(ApplicationFilterChain.java:237)
> > > >         at
> > > > org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> > > > cationFilterChain.java:157)
> > > >         at
> > > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> > > > rapperValve.java:214)
> > > >
> > >
> > >
> > 
> ---------------------------------------------------------------------
> > > 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


Mime
View raw message