![]() ![]() ![]() ![]() |
このチュートリアルでは wlcompile
Ant タスクを使用してエンタープライズ アプリケーションのソース ファイルをコンパイルする方法を説明します。wlcompile
は WebLogic 分割開発ディレクトリ構造を使用してビルドまたは出力ディレクトリを生成します。このディレクトリには、コンパイルされた Java クラスが格納されます。ビルド ディレクトリと「チュートリアル 6 : WebLogic Server の分割ディレクトリ構造について」で説明されるソース ディレクトリで、WebLogic Server のデプロイ可能なアプリケーションが構成されます。
分割開発ディレクトリを使用して以下のようなアプリケーション ビルド タスクを実行するその他の WebLogic Server Ant タスクの使用方法については、後続のチュートリアルで説明します。
このチュートリアルを始める前に、以下のことを行ってください。
medrec_tutorial.zip
ファイルを復元した後で \build
ディレクトリの内容を見ると、MedRec アプリケーションを構成する多くのクラスがすでにビルドされていることがわかります。\medrecEar
および \startBrowserEar
アプリケーションのすべてのクラスや、\physicianEar
アプリケーションの Web サービスなどです。このチュートリアルでは、wlcompile
Ant タスクを使用して、まだコンパイルされていない physicianEar
アプリケーションのクラス (EJB や Web サービス関連) をコンパイルする方法について説明します。ビルド済みのクラスは、再コンパイルすることもできます。
MedRec アプリケーション スイートで分割開発ディレクトリと共に wlcompile
タスクを使用するには、次の手順に従います。
WebLogic 分割開発ディレクトリ構造を使用してソース ファイルを格納すると、アプリケーションのコンパイルに必要な build.xml
ファイルを簡略化できます。ほとんどのエンタープライズ アプリケーションの場合、すべてのモジュールをコンパイルするのに数行の簡単なスクリプトで十分です。wlcompile
タスクにより、アプリケーションで使用されるモジュールが自動的に判断され、それに従ってクラスパスの依存関係が維持されるからです。
注意 : | このリリースの WebLogic Server では、wlcompile Ant タスクは Java Web サービス (JWS) ファイルで実装された Web サービスをコンパイルしません。代わりに、wlcompile タスクを呼び出して EJB などの他のすべてのコンポーネントをコンパイルする前に、jwsc Web サービス Ant タスクを明示的に呼び出して Web サービスを生成する必要があります。jwsc の詳細については、「チュートリアル 11 : JWS ファイルのプログラミングによる Java EE Web サービスの作成」で説明します。 |
wlcompile
のしくみを理解するために、簡単な XML ファイルを作成して Physician アプリケーションをコンパイルします。まず MedRec プロジェクト ディレクトリ内の physicianEar
サブディレクトリに移動します。prompt> cd c:\medrec_tutorial\src\physicianEar
physicianEar
の最上位には、エンタープライズ アプリケーションを構成する Web アプリケーション、EJB、および Web サービス コンポーネントのサブディレクトリが含まれます。XML ファイルもこの場所に格納します。
physicianEar
ディレクトリに新しい mybuild.xml
ファイルを作成します。prompt> notepad mybuild.xml
注意 : | build.xml ファイルを手動で入力したくない場合は、wlcompile_tutorial.xml ファイル (c:\medrec_tutorial\src\physicianEar 内) をコピーして、新しいファイル名 mybuild.xml にします。その上で、以降の手順でこのファイルの内容を理解してください。 |
mybuild.xml
ファイルで、まず tutorial
という名前のプロジェクトを定義します。<project name="tutorial" default="build">
build
) は、非常に単純です。wlcompile
タスクを使用して、ソース ディレクトリ (分割開発ディレクトリ構造を使用) およびコンパイルされたファイルを格納する出力ディレクトリを指定します。次の行を入力します。 <target name="build">
<wlcompile srcdir="c:/medrec_tutorial/src/physicianEar"
destdir="c:/medrec_tutorial/build/physicianEar">
<ejbgen source="1.5" />
</wlcompile>
</target>
単純なエンタープライズ アプリケーションで必要なことは、多くの場合、wlcompile
でコンパイル用に使用するソース ディレクトリとビルド ディレクトリを指定することだけです。srcdir
ディレクトリと destdir
ディレクトリが必ず別々の場所を指すようにしてください。開発プロセス中はソース ファイルと出力ファイルが別々に格納されるようにする必要があります。
ejbgen
Ant タスクでは、EJBGen コマンドが *.ejb
ファイルを処理するときに使用する JDK のバージョンを指定します。MedRec の EJB は新しい JDK 5.0 メタデータ アノテーション機能を使用しているため、version
属性を 1.5 (JDK の 5.0 バージョンと同じ) に設定してください。
mybuild.xml
ファイルを完成するには、次の行を追加してプロジェクトを閉じます。</project>
完成したファイルは次のようになっている必要があります。すべてのテキストを入力する代わりに、wlcompile_tutorial.xml
をコピーすることもできます。
<project name="tutorial" default="build">
<target name="build">
<wlcompile srcdir="c:/medrec_tutorial/src/physicianEar"
destdir="c:/medrec_tutorial/build/physicianEar">
<ejbgen source="1.5" />
</wlcompile>
</target>
</project>
mybuild.xml
ファイルを作成したら、これを使用してアプリケーションをコンパイルできます。
prompt> c:\bea\user_projects\domains\MedRecDomain\bin\setDomainEnv.cmd
physicianEar
ディレクトリに移動し、ant
コマンドを使用して mybuild.xml
スクリプトを実行してコンパイルします。prompt> cd c:\medrec_tutorial\src\physicianEar
prompt> ant -f mybuild.xml
ビルド スクリプトに情報メッセージを追加しなかった場合でも、wlcompile
タスクにより、進捗状況を示す独自の出力が表示されます。
Buildfile: mybuild.xml
build:
[javac] Compiling 1 source file to C:\medrec_tutorial\build\physicianEar\APP-INF\classes
[ejbgen] EJBGen WebLogic Server 10.0 SP0 Mon Mar 26 02:02:31 BST 2007 914577
[ejbgen] Creating C:\medrec_tutorial\build\physicianEar\physSessionEjbs\com\bea\medrec\controller\PhysicianSessionHome.java
[ejbgen] Creating C:\medrec_tutorial\build\physicianEar\physSessionEjbs\com\bea\medrec\controller\PhysicianSession.java
[ejbgen] Creating C:\medrec_tutorial\build\physicianEar\physSessionEjbs\\ejb-jar.xml
[ejbgen] Creating C:\medrec_tutorial\build\physicianEar\physSessionEjbs\\weblogic-ejb-jar.xml
[move] Moving 2 files to C:\medrec_tutorial\build\physicianEar\physSessionEjbs\META-INF
[javac] Compiling 3 source files to C:\medrec_tutorial\build\physicianEar\physSessionEjbs
[wlcompile] Note: C:\medrec_tutorial\build\physicianEar\physSessionEjbs\com\bea\medrec\controller\PhysicianSessionEJB.java uses or overrides a deprecated API.
[wlcompile] Note: Recompile with -Xlint:deprecation for details.
[javac] Compiling 12 source files to C:\medrec_tutorial\build\physicianEar\physicianWebApp\WEB-INF\classes
BUILD SUCCESSFUL
Total time: 22 seconds
prompt> ant -f wlcompile_tutorial.xml
physicianEar
をコンパイルしたので、ここでビルド ディレクトリがどのようになっているかを確認します。ビルド ターゲットのすべての出力は、エンタープライズ アプリケーションの出力ディレクトリ c:\medrec_tutorial\build\physicianEar
にあります。
wlcompile
の出力は、ビルドがまず、Physician アプリケーションのセッション EJB の ejbgen
を実行したことを示しています。デプロイメント記述子が作成されたことを確認してください。
prompt> dir c:\medrec_tutorial\build\physicianEar\physSessionEjbs\META-INF
Directory of c:\medrec_tutorial\build\physicianEar\physSessionEjbs\META-INF
04/05/2007 11:25 AM <DIR> .
04/05/2007 11:25 AM <DIR> ..
04/05/2007 11:25 AM 2,295 ejb-jar.xml
04/05/2007 11:25 AM 1,038 weblogic-ejb-jar.xml
また、wlcompile
Ant タスクで実際の EJB クラスもコンパイルされ、physSessionEjbs
ディレクトリにコピーされています。
prompt> dir c:\medrec_tutorial\build\physicianEar\physSessionEjbs\com\bea\medrec\controller
Directory of c:\medrec_tutorial\build\physicianEar\physSessionEjbs\com\bea\medrec\controller
04/05/2007 11:22 AM <DIR> .
04/05/2007 11:22 AM <DIR> ..
04/05/2007 11:25 AM 686 PhysicianSession.class
04/05/2007 11:25 AM 3,014 PhysicianSession.java
04/05/2007 11:25 AM 7,081 PhysicianSessionEJB.class
04/05/2007 11:25 AM 10,724 PhysicianSessionEJB.java
04/05/2007 11:25 AM 277 PhysicianSessionHome.class
04/05/2007 11:25 AM 995 PhysicianSessionHome.java
wlcompile
により Web アプリケーションのサーブレット クラスがコンパイルされ、WEB-INF\classes
ディレクトリに置かれています。
prompt> dir c:\medrec_tutorial\build\physicianEar\physicianWebApp\WEB-INF\classes\com\bea\medrec
Directory of c:\medrec_tutorial\build\physicianEar\physicianWebApp\WEB-INF\classes\com\bea\medrec
04/05/2007 11:22 AM <DIR> .
04/05/2007 11:22 AM <DIR> ..
04/05/2007 11:22 AM <DIR> actions
actions
ディレクトリには Struts アクション クラスが格納されます。
エンタープライズ アプリケーションのビルド ディレクトリ (c:\medrec_tutorial\build\physicianEar
) 全体には、EJB および Web サービス コンポーネントのみのデプロイメント記述子ファイルが含まれています。これは、EJB 記述子と Web サービス記述子が、それぞれ ejbgen
と Java Web サービス (JWS) アノテーションを使用して生成されるためです (Web サービスは .zip
ファイルの一部としてあらかじめコンパイルされています)。ビルド スクリプトを再び実行して、EJB および Web サービス デプロイメント記述子を含むビルド ディレクトリの内容全体を再作成できます。
エンタープライズ アプリケーションおよび Web アプリケーションのデプロイメント記述子 (application.xml
、weblogic-application.xml
、web.xml
、および weblogic.xml
) は、手動で作成および編集されるためソース ディレクトリに残っています。これらは簡単に置き換えたり再ビルドしたりすることはできません。
より複雑なエンタープライズ アプリケーションでは、wlcompile
タスクで自動的に処理できないコンパイルの依存関係がある場合があります。ただし、wlcompile
で include
および exclude
オプションを使用して独自の依存関係を強制できます。include
および exclude
はエンタープライズ アプリケーション モジュール名 (エンタープライズ アプリケーションのソース ディレクトリ内のサブディレクトリ名) を受けて、これらをコンパイル処理に含めたり除外したりします。例については、「全体像」を参照してください。
MedRec エンタープライズ アプリケーションでは WebLogic 分割開発ディレクトリ構造を使用し、ビルド スクリプトで wlcompile
タスクを使用しますが、デフォルトの wlcompile
タスクで処理されない特定の依存関係があります。たとえば、build.xml
ファイルの次のようなサンプルを見てみましょう。
<wlcompile srcdir="${src.dir}" destdir="${dest.dir}"
excludes="adminWebApp, xml, mdbEjbs, webServicesEjb"/>
ビルド スクリプトがまず、エンタープライズ アプリケーションの adminWebApp
、xml
、mdbEjbs
、および webServicesEjb
を除くすべてのモジュールをコンパイルすることがわかります。コンパイルされないこれらのモジュールは、ソース ディレクトリ内のサブディレクトリ名に対応しています。
続いて、アプリケーションの xml
および webServicesEjb
モジュールだけがコンパイルされます。
<wlcompile srcdir="${src.dir}" destdir="${dest.dir}"
includes="xml, webServicesEjb"
また、コンパイルの前に、wlcompile
Ant タスクは、build/
earName
/APP-INF/lib
および build/
earName
/APP-INF/classes
の両方の内容を CLASSPATH に追加することに注意してください。
![]() ![]() ![]() |