インストールと設定


インストールと設定

Tomcat と WLS では JNDI 名の命名規則が異なります(JNDI 名は 実装依存です)ので property にして動的に入れ替えられるように しました。Ant を使用して WLS 用の WAR を作成して Deploy を 行っています。

インストール手順

インストール

以下から Ant 1.6.1 をダウンロードします

apache-ant-1.6.1-bin.zip を c:\java (任意)に展開します。 結果として c:\java\apache-ant-1.6.1 というディレクトリが できます。

使い方

以下の内容をアプリケーションのディレクトリに build.xml というファイル名 でおきます。

training/         <-- プロジェクトのディレクトリ
        /training <-- ここです
        /javascript
        /WEB-INF
        /work

eclipse から build.xml で右クリックして「Antの実行」を選択します。

2回目からは「実行->外部ツール->training build.xml(名前は異なる)」 でも実行可能です。またツールバーにもあります。

build.xml

training.properties というファイルが Tomcat と WLS で JNDI 名が異なる ことを吸収するためのプロパティファイルです。別途 WebLogic という ディレクトリを作成してそちらにコピーしています。ただしコピー時間を 短縮するために javascript、tld、lib はコピーせずに WAR を作成しています。

ディレクトリ構成

P:/dev/lab/lab/WEB-INF/src                src は WAR に含まないようにしています
        |         +-- lib                 struts.jar などはここから直接 WAR を作成しています
        |         +-- classes             クラスファイルやプロパティファイルのコピー元です
        |             web.xml
        +- weblogic/WEB-INF/classes       クラスファイルやプロパティファイルのコピー先です
                            web.xml       共通設定ファイルです
                            weblogic.xml  weblogic用設定ファイルです

build.xml

<?xml version="1.0" encoding="Shift_JIS" ?> 
<project name="training" default="deploy">
  <!-- 本番にも deploy するときは default="deploy, production" にします -->

  <!-- set global properties for this build -->
  <property name="package" value="training" />
  <property name="web.dir" value="WEB-INF/" />
  <property name="src.dir" value="WEB-INF/src" />
  <property name="class.dir" value="WEB-INF/classes" />
  <property name="lib.dir" value="WEB-INF/lib" />
  <property name="script.dir" value="javascript" />

  <property name="dist" value="../weblogic" />

  <property name="deploy.st" value="ST環境のUNC名"/>
  <property name="deploy.production" value="本番環境のUNC名"/>

  <!-- init task -->
  <target name="init" >
    <mkdir dir="${dist}"/>
    <mkdir dir="${dist}/WEB-INF"/>
    <mkdir dir="${dist}/WEB-INF/classes"/>
    <mkdir dir="${dist}/WEB-INF/lib"/>
    <!-- パッケージをコピーする -->
    <copy todir="${dist}">
      <fileset dir=".">
        <include name="**/*.html" />
        <include name="**/*.jsp" />
        <include name="**/*.class"/>
        <include name="**/*.xml" />
        <include name="**/*.properties" />
        <exclude name="work/" />
        <exclude name="${src.dir}/" />
        <exclude name="**/build.xml"/>
        <exclude name="**/build.properties"/>
        <exclude name="**/commons-logging.properties"/>
        <exclude name="**/training.properties"/>
        <exclude name="**/*.war"/>
      </fileset>
    </copy>
    <!-- training.properties は WebLogic 用に入れ替える -->
    <copy tofile="${dist}/${class.dir}/training.properties">
      <fileset dir=".">
        <include name="${src.dir}/training.properties.weblogic" />
      </fileset>
    </copy>
    <copy tofile="${dist}/${class.dir}/commons-logging.properties">
      <fileset dir=".">
        <include name="${src.dir}/commons-logging.properties.weblogic" />
      </fileset>
    </copy>
  </target>

  <!-- war task -->
  <target name="${package}.war" depends="init" >
    <delete file="../${package}.war" />
    <war warfile="../${package}.war" webxml="WEB-INF/web.xml" >
      <zipfileset dir="${dist}/${web.dir}" prefix="WEB-INF" includes="weblogic.xml"/>
      <zipfileset dir="${dist}/${web.dir}" prefix="WEB-INF" includes="struts-config.xml"/>
      <zipfileset dir="${dist}/${web.dir}" prefix="WEB-INF" includes="validation.xml"/>
      <zipfileset dir="${dist}/${web.dir}" prefix="WEB-INF" includes="validator-rules.xml"/>
      <!-- javascript、tld、lib は dist からではなく元ディレクトリからアーカイブ -->
      <zipfileset dir="${script.dir}" prefix="javascript" includes="**/*.js"/>
      <zipfileset dir="${web.dir}" prefix="WEB-INF" includes="**/*.tld"/>
      <lib dir="${lib.dir}" />
      <classes dir="${dist}/${class.dir}">
       <!-- とりあえずテストクラスも含める -->
       <!-- <exclude name="**/*Test*" /> -->
      </classes>
      <fileset dir="." includes="*.jsp,*.html"></fileset>
    </war>
  </target>

  <!-- deploy -->
  <target name="deploy" depends="${package}.war">
    <copy todir="${deploy.st}">
      <fileset file="../${package}.war"/>
    </copy>
  </target>
  <!-- 本番環境へ deploy するときに使用します -->
  <target name="production" depends="${package}.war">
    <copy todir="${deploy.production}">
      <fileset file="../${package}.war"/>
    </copy>
  </target>

</project>

関連リンク



Return to TOP