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>