Каков наилучший способ прекомпиляции JSP с использованием Ant - PullRequest
5 голосов
/ 23 октября 2008

Я пытаюсь найти наилучший способ использования Ant для предварительной компиляции JSP, которые будут развернуты на сервере приложений Oracle. Несмотря на то, что я выполняю развертывание на сервере приложений Oracle, я бы хотел не использовать версию Ant для Oracle.

Ответы [ 2 ]

7 голосов
/ 25 октября 2008

JSP-компилятор Oracle доступен в вашей oc4j-установке по адресу ORACLE_HOME / j2ee / home / jsp / bin / ojspc

Предполагая, что ваш путь к классам верен в строке компандирования, которую вы запустите:

ojspc your.war

Война будет обновлена ​​и поместит банку в WEB-INF / lib, содержащую предварительно скомпилированные JSP. Обратите внимание, что если вы предварительно компилируете 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 из командной строки, вы можете начать использовать задачи ANT, предоставляемые Oracle.

В пределах ANT

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

Ваш тег проекта должен ссылаться на задачи оракула:

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

Обновление 22.02.2011 Вы также можете просто работать с jar ojspc напрямую и избегать попыток настроить задачу 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>

Определение 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>
2 голосов
/ 23 октября 2008

Я не уверен, что вы подразумеваете под версией Oracle для Oracle, но, насколько я понимаю, вам понадобится задача муравья-оракула, чтобы выполнить эту работу. Эта страница объясняет, как это сделать. Вы будете использовать apache ant, который вы загружаете с веб-сайта apache, но вам нужно использовать библиотеку задач ant ant из Oracle для предварительной компиляции JSP для Oracle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...