Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Qual é a melhor maneira de pré-compilar JSPs usando Ant


O compilador JSP da Oracle está disponível em sua instalação oc4j em ORACLE_HOME/j2ee/home/jsp/bin/ojspc

Supondo que seu classpath esteja correto na linha de compand, você executaria:

ojspc seu.war

O war será atualizado e colocará um jar no WEB-INF/lib contendo as JSPs pré-compiladas. Observe que, se seus JSPs pré-compilarem, você também deve definir MAIN_MODE como 'JUSTRUN' para obter o benefício adicional de desempenho de pré-compilar seus JSPs. A configuração JUSTRUN faz o que implica, o contêiner OC4J não verificará mais os arquivos .jsp atualizados.
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>oracle.jsp.runtimev2.JspServlet</servlet-class>
    <init-param>
      <param-name>main_mode</param-name>
      <param-value>justrun</param-value>
    </init-param>
</servlet>

Quando estiver confortável em chamar ojspc a partir da linha de comando, você poderá começar a usar as tarefas ANT fornecidas pelo Oracle.

No ANT
<oracle:compileJsp file="dist/war/before-${app}war"
        verbose="false"
        output="dist/war/${app}.war" />

Sua tag de projeto deve fazer referência às tarefas oracle:
<project name="your-name" default="compile" basedir="."  xmlns:oracle="antlib:oracle">
...
</project>

Atualização em 22.02.2011 Você também pode trabalhar diretamente com o jar ojspc e evitar tentar configurar a tarefa oracle:compileJsp, o código abaixo pega um arquivo war e pré-compila o JSPS nele.
 <!-- Now Precompile the War File (see entry in <project> tag ) -->
    <java jar="${env.ORACLE_HOME}/j2ee/home/ojspc.jar" classpathref="jspPreCompileClassPath" fork="true">
        <arg value="-addClasspath"/>
        <arg pathref="classpath"/>
        <arg line="'${dist}/war/a-war-file.war'"/>
    </java>

a defnição jspPreCompileClassPath se parece com isso:
  <path id="jspPreCompileClassPath">
    <path location="${env.ORACLE_HOME}/j2ee/home/lib/pcl.jar"/>
    <path location="${env.ORACLE_HOME}/j2ee/home/lib/ojsp.jar"/>
    <path location="${env.ORACLE_HOME}/j2ee/home/lib/oc4j-internal.jar"/>
    <path location="${env.ORACLE_HOME}/j2ee/home/lib/servlet.jar"/>
    <path location="${env.ORACLE_HOME}/j2ee/home/lib/commons-el.jar"/>
    <path location="${env.ORACLE_HOME}/j2ee/home/lib/bcel.jar"/>
    <path location="${env.ORACLE_HOME}/lib/xmlparserv2.jar"/>
    <path location="${env.ORACLE_HOME}/j2ee/home/lib/oc4j-schemas.jar"/>
    <path location="${env.ORACLE_HOME}/j2ee/home/jsp/lib/taglib/ojsputil.jar"/>
  </path>