使用Ant预编译JSP的最佳方法是什么?

时间:2008-10-23 14:50:29

标签: java oracle jsp ant

我试图找出使用Ant预编译将部署到Oracle应用服务器的JSP的最佳方法。即使我正在部署到Oracle应用服务器,我也希望避免使用Oracle的Ant版本。

2 个答案:

答案 0 :(得分:7)

Oracle的JSP编译器在您的oc4j安装中可用于ORACLE_HOME / j2ee / home / jsp / bin / ojspc

假设您的类路径在compand行正确,您将运行:

ojspc your.war

战争将得到更新并将jar放在包含预编译JSP的WEB-INF / lib中。请注意,如果您的预编译JSP还应将MAIN_MODE设置为“JUSTRUN”,以获得预编译JSP的额外性能优势。 JUSTRUN设置完成了它的含义,OC4J容器将不再检查更新的.jsp文件。

<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>

一旦熟悉从命令行调用ojspc,您就可以开始使用Oracle提供的ANT任务了。

在ANT中

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

您的项目代码应引用oracle任务:

<project name="your-name" default="compile" basedir="."  xmlns:oracle="antlib:oracle">
...
</project>

更新02.22.2011 您也可以直接使用ojspc jar并避免尝试配置oracle:compileJsp Task,下面的代码接受war文件并在其中预编译JSP。

 <!-- 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>

jspPreCompileClassPath定义如下所示:

  <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>

答案 1 :(得分:2)

我不确定Oracle的Ant版本是什么意思,但据我所知,你需要oracle的ant任务来完成这项工作。 This页面解释了如何执行此操作。您将使用从apache网站下载的apache ant,但是您需要使用Oracle的Oracle ant任务库来预编译Oracle的JSP。