Compilar JSP antes de publicar no Servidor?

Quando colocamos um JSP no servidor (Tomcat, JBoss, cia…) a primeira vez que ele é executado ele é compilado para um servlet.

Existe uma mandeira de eu compilar esses JSP antes de por a aplicação para rodar no servidor? Pergunto isso pois todas as alterações que eu faço, publico no meu cliente e etc, ele fica meio bravo porque a primeira vez demora para abrir, então se houver uma maneira de evitar isso seria melhor.

Existe?

Obrigado

Esse teu cliente nao tem mais o que fazer da vida neh?

Vc pode passar precompile=true na url, como eh “pagina.jsp?precompile=true”

Rafael

[quote=alex.lopes]Quando colocamos um JSP no servidor (Tomcat, JBoss, cia…) a primeira vez que ele é executado ele é compilado para um servlet.

Existe uma mandeira de eu compilar esses JSP antes de por a aplicação para rodar no servidor? Pergunto isso pois todas as alterações que eu faço, publico no meu cliente e etc, ele fica meio bravo porque a primeira vez demora para abrir, então se houver uma maneira de evitar isso seria melhor.

Existe?

Obrigado[/quote]

Você utiliza o WAR para distribuir as suas aplicações WEB???
Se sim o Ant faz isto para você com a task jspC más isto só server se você utilizar o container Tomcat…

[quote=gulira]
Você utiliza o WAR para distribuir as suas aplicações WEB???
Se sim o Ant faz isto para você com a task jspC más isto só server se você utilizar o container Tomcat…[/quote]

Sim, está tudo empacotado em um WAR e estou rodando utilizando o Tomcat.

você tem um exemplo da Ant Task para me passar?

valeu

Tem um exemplo aquih:

http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jasper-howto.html#Web%20Application%20Compilation

Talvez possa te ajudar…

Testei aki e dá o seguinte erro:

BUILD FAILED: L:\Unissul\dist\compile\build.xml:22: java.lang.ExceptionInInitializerError

:cry: :cry: :cry:

O que está errado???

Posta seu build.xml aih…

vc faz o jsp, publica ele e não acessa??? acessa o seu jsp antes do maldito e pronto, dai jah vai estar compilado… ehehehehe…

((;

Meu build file é este aki:

<project name="Webapp Precompilation" default="all" basedir="."> 

	<property name="tomcat.home" value="C:/Arquivos de programas/Apache Software Foundation/Tomcat 5.0" />
	<property name="webapp.path" value="${tomcat.home}/webapps/unissul" />
	<property name="java.home" value="C:/Arquivos de programas/j2sdk1.4.2_06" />
	
	<target name="jspc"> 
    	<taskdef classname="org.apache.jasper.JspC" name="jasper2" > 
      		<classpath id="jspc.classpath"> 
	        	<pathelement location="${java.home}/lib/tools.jar" /> 
	        	<fileset dir="${tomcat.home}/server/lib"> 
	          		<include name="*.jar"/> 
	        	</fileset> 
	        	<fileset dir="${tomcat.home}/common/lib"> 
	          		<include name="*.jar"/> 
	        	</fileset> 
      		</classpath> 
    	</taskdef> 

    	<jasper2 validateXml="false" uriroot="${webapp.path}" 
			webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml" 
        	outputDir="${webapp.path}/WEB-INF/classes" /> 
	</target> 

  	<target name="compile">
    	<mkdir dir="${webapp.path}/WEB-INF/classes" />
    	<mkdir dir="${webapp.path}/WEB-INF/lib" />

		<javac destdir="${webapp.path}/WEB-INF/classes" optimize="off" debug="on" 
			failonerror="false" srcdir="${webapp.path}/WEB-INF/classes" excludes="**/*.smap">
      		<classpath>
        		<pathelement location="${webapp.path}/WEB-INF/classes" />
        		<fileset dir="${webapp.path}/WEB-INF/lib">
          			<include name="*.jar" />
        		</fileset>
        		<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>
      		<include name="**" />
      		<exclude name="tags/**" />
    	</javac>
  </target>

  <target name="all" depends="jspc, compile" />
</project>

tomara que ajude :roll:

Alguém pode nos socorrer :frowning:

Abraços!

Mais uma coisinha - quando você faz isso, ele põe os servlets compilados em um determinado diretório.
Só que o Tomcat não sabe que eles estão lá (ele acha que tem de procurar lá no work\Catalina\localhost\suaaplicacao ) , e tenta recompilar o tal do JSP de qualquer maneira. (Convenhamos que é meio tosco mesmo)
Para que funcione mesmo, você precisa mexer no web.xml e pôr as referências aos servlets gerados. (dica: procure esse arquivo generated_web.xml que o Jasper gerou. Copie o que for necessário dentro do web.xml da sua aplicação.)

:cry: :cry:

Meu build file está assim:

[code]<?xml version="1.0" encoding="iso-8859-1" ?>

<property name="root.dir" value="${basedir}/site" />
<property name="dist.dir" value="${basedir}/dist" />
<property name="war.arquivo" value="${dist.dir}/radar.war" />
<property name="web.descritor" value="${root.dir}/WEB-INF/web.xml" />
<property name="web.lib" value="${root.dir}/WEB-INF/lib" />
<property name="deploy.dir" value="${basedir}/classes" />
<property name="tomcat.home" value="C:/Arquivos de programas/Apache Software Foundation/Tomcat 5.0" />
<property name="shared.classes" value="${tomcat.home}/webapps/radar/WEB-INF/classes" />

<target name="criarWar" description="Cria o arquivo de distribuição da aplicação web em produção">
	<delete file="${war.arquivo}" />
	<copy todir="${root.dir}/WEB-INF/classes">
		<fileset dir="${root.dir}/reports" includes="*.class" />
	</copy>
	<war destfile="${war.arquivo}" webxml="${web.descritor}">
		<fileset dir="${root.dir}" excludes="**/*.jrxml, reports/*.class" />
	</war>
</target>

<target name="jspc">
	<taskdef classname="org.apache.jasper.JspC" name="jasper2" loaderref="jspc">
		<classpath id="jspc.classpath">
			<pathelement location="${java.home}/../lib/tools.jar" />
			<fileset dir="${tomcat.home}/server/lib">
				<include name="*.jar" />
			</fileset>
			<fileset dir="${tomcat.home}/common/lib">
				<include name="*.jar" />
			</fileset>
		</classpath>
	</taskdef>

	<jasper2 validatexml="false" uriroot="${root.dir}" webxmlfragment="${root.dir}/WEB-INF/generated_web.xml" outputdir="${root.dir}/WEB-INF/classes" />
</target>

[/code]

Porém num funfa nem a pau e dá o seguinte erro:

Buildfile: L:\Radar\dist\deploy\build.xml jspc: BUILD FAILED: L:\Radar\dist\deploy\build.xml:41: java.lang.ExceptionInInitializerError Total time: 2 seconds

Realmente não sei mais o que fazer… :cry: