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(名前は異なる)」 でも実行可能です。またツールバーにもあります。
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>