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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/230037/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-18 17:24:11  来源:igfitidea点击:

What is the best way to precompile JSPs using Ant

javaoraclejspant

提问by rich

I am trying to figure out the best way to use Ant to precompile JSPs that will be deployed to an Oracle application server. Even though I am deploying to an Oracle app server I would like to avoid using Oracle's version of Ant.

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

回答by Brian

Oracle's JSP compiler is available in your oc4j install at ORACLE_HOME/j2ee/home/jsp/bin/ojspc

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

Assuming your classpath is correct at the compand line you would run:

假设您的类路径在您将运行的压缩行中是正确的:

ojspc your.war

ojspc your.war

The war will get updated and place a jar in the WEB-INF/lib containing the pre-compiled JSPs. Note that if your pre-compiling JSPs you should also set the MAIN_MODE to 'JUSTRUN' to get the additional performance benefit of pre-compiling your JSPs. The JUSTRUN setting does what it implies, the OC4J container will no longer check for updated .jsp files.

War将得到更新并在包含预编译 JSP 的 WEB-INF/lib 中放置一个 jar。请注意,如果您预编译 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>

Once your comfortable with calling ojspc from the command line You can then begin to use the ANT tasks provided by Oracle.

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

Within ANT

蚂蚁金服内部

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

Your project tag should reference the oracle tasks:

您的项目标签应该引用 oracle 任务:

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

Update 02.22.2011You can also just work with the ojspc jar directly and avoid trying to configure the oracle:compileJsp Task, the code below takes a war file and pre-compiles the JSPS in it.

2011 年 2 月 22 日更新您也可以直接使用 ojspc jar 并避免尝试配置 oracle:compileJsp 任务,下面的代码采用一个 war 文件并在其中预编译 JSPS。

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

the jspPreCompileClassPath defnition looks like this:

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>

回答by Vincent Ramdhanie

I'm not sure what you mean by Oracle's version of Ant but as I understand it you will need the oracle's ant task to do this job. Thispage explains how to do it. You will be using the apache ant that you download from the apache website, but you need to use Oracle ant task library from Oracle to pre compile JSPs for Oracle.

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