![]() ![]() ![]() ![]() |
以下の節では、Java EE アプリケーションまたはモジュールの開発に使用できる WebLogic Server 分割開発ディレクトリの作成手順について説明します。
WebLogic 分割開発ディレクトリ環境は、ディレクトリ レイアウトと、Java EE アプリケーションの反復的なビルド、変更、およびデプロイメントを支援する関連 Ant タスクで構成されます。他の開発フレームワークと比較して、WebLogic 分割開発ディレクトリには以下のメリットがあります。
ソース ディレクトリとビルド ディレクトリは、分割開発ディレクトリ環境の基盤です。ソース ディレクトリには、プロジェクトのすべての編集可能なファイル (Java ソース ファイル、編集可能な記述子ファイル、JSP、静的コンテンツなど) が格納されます。アプリケーションのソース ディレクトリは、「分割開発ディレクトリでの Java EE コンポーネントの配置」で説明されているディレクトリ構造のガイドラインに従って作成します。
ソース ディレクトリの最上位レベルは常に、1 つの Java EE モジュールだけを開発している場合であっても、エンタープライズ アプリケーション (.ear
ファイル) を表します。最上位ソース ディレクトリの下のサブディレクトリには、以下のものが格納されます。
ビルド ディレクトリの内容は、有効なソース ディレクトリに対して wlcompile
ant タスクを実行すると自動的に生成されます。wlcompile
タスクはソース ディレクトリ内の EJB、Web アプリケーション、および共有のライブラリ ディレクトリとクラス ディレクトリを認識し、一般的なクラスパスの要件をサポートする順序でそれらのコンポーネントをビルドします。補足的な Ant タスクを使用すると、Web サービスをビルドするか、アノテーション付きの EJB コードからデプロイメント記述子ファイルを生成することができます。
ビルド ディレクトリには、ビルド プロセスで生成されたファイルのみが格納されます。ソース ディレクトリとビルド ディレクトリのファイルを組み合わせることにより、デプロイ可能な Java EE アプリケーションになります。
ビルド ディレクトリとソース ディレクトリの内容は、任意に選択したディレクトリに配置できます。ただし、使いやすいように、それらのディレクトリは 1 つのプロジェクト ディレクトリの中の source
および build
というディレクトリに配置されます (たとえば、\myproject\build
および \myproject\source
)。
すべての WebLogic Server デプロイメント ツール (weblogic.Deployer
、wldeploy
、および Administration Console) は、分割開発ディレクトリからのダイレクトのデプロイメントをサポートしています。WebLogic Server にアプリケーションをデプロイするときには、ビルド ディレクトリのみ指定します。
WebLogic Server は、アプリケーションのデプロイメントでソース ディレクトリ内のすべてのクラスとリソースを使用しようとします。必要なリソースがソース ディレクトリにない場合、WebLogic Server はアプリケーションのビルド ディレクトリでそのリソースを探します。たとえば、編集可能なファイルとしてソース コードと一緒に格納されているのではなく、ビルド プロセスの過程でデプロイメント記述子が生成された場合、WebLogic Server はその生成ファイルをビルド ディレクトリから取得します。
WebLogic Server は、アプリケーションのビルド ディレクトリの最上位の位置にある .beabuild.txt
ファイルを調べてソース ディレクトリの位置を確認します。ソース ディレクトリを移動した場合は、.beabuild.txt
ファイルを編集して新しいソース ディレクトリ名を指定してください。
「分割開発ディレクトリからのデプロイメントとパッケージ化」では、分割ディレクトリ環境からのデプロイメントを自動化するために使用できる wldeploy
Ant タスクが説明されています。
図 3-2 では、一般的なデプロイメント プロセスを示します。このプロセスは、WebLogic Server のツールでビルド ディレクトリを指定することから始まります。この図で、コンパイルされたクラスと生成されたデプロイメント記述子はすべてビルド ディレクトリにありますが、他のアプリケーション リソース (静的ファイルや編集可能なデプロイメント記述子など) はどこにあるかわかりません。WebLogic Server は隠された .beabuild.txt
ファイルを使用して、必要なリソースのあるアプリケーションのソース ディレクトリを見つけます。
Oracle では、分割開発ディレクトリ環境を使用したアプリケーションの開発を支援する Ant タスクのコレクションを用意しています。各 Ant タスクは、ソース ディレクトリ、ビルド ディレクトリ、またはその両方を使用して一般的な開発タスクを実行します。
wlcompile
は Java クラスをコンパイルするだけでなく、アノテーション付きの .ejb
ファイルを処理してデプロイメント記述子を作成します (「wlcompile を使用したアプリケーションのコンパイル」を参照)。
次の手順では、分割開発ディレクトリ構造を使用して WebLogic Server アプリケーションをビルドおよびデプロイする方法を示します。
WL_HOME
\server\bin\
ディレクトリにあります。WL_HOME
は、WebLogic Server のインストール先の最上位ディレクトリです。weblogic.BuildXMLGen
ユーティリティを使用して、プロジェクトで使用するデフォルトの build.xml
ファイルを生成します。環境の必要に応じて、デフォルトのプロパティ値を編集します。「weblogic.BuildXMLGen を使用した基本的な build.xml ファイルの生成」を参照してください。build.xml
ファイルのデフォルトの対象を使用して、アプリケーションをビルド、デプロイ、およびパッケージ化します。デフォルトの対象のリストについては、「weblogic.BuildXMLGen を使用した基本的な build.xml ファイルの生成」を参照してください。
分割開発ディレクトリ構造では、各プロジェクトを Java EE エンタープライズ アプリケーションとしてステージングすることが求められます。したがって、分割ディレクトリの Ant タスクをうまく利用するには、スタンドアロンの Web アプリケーションや EJB でもエンタープライズ アプリケーションのモジュールとしてステージングすることをお勧めします。このプラクティスを行うことで、後日モジュールを簡単に追加または削除することもできます (アプリケーションがすでに EAR として構成されているため)。
注意 : | プロジェクトで複数の EAR が必要な場合は、「分割開発ディレクトリを使用した複数 EAR プロジェクトの開発」も参照してください。 |
以降の節では、分割開発ディレクトリ構造で以下のモジュール タイプをステージングするための基本規約を説明します。
ディレクトリの例は、WL_HOME\samples\server\examples\src\examples\splitdir
にインストールされた splitdir
サンプル アプリケーションから利用します。WL_HOME は WebLogic Server のインストール ディレクトリです。
次の図は、Web アプリケーション、EJB、共有ユーティリティ クラス、およびサード パーティ ライブラリを持つエンタープライズ アプリケーションのソース ディレクトリの内容をまとめたものです。以降の節では、エンタープライズ ソース ディレクトリの個々の要素がどのように配置されるのかを詳しく説明します。
分割開発ディレクトリ プロジェクトの最上位ソース ディレクトリは、エンタープライズ アプリケーションを表します。次の図は、このディレクトリに必要な最小限のファイルとディレクトリを示しています。
エンタープライズ アプリケーション ディレクトリは、以降の節で説明されるように Web アプリケーション、EJB、ユーティリティ クラス、サード パーティ Jar ファイルなどを保持する 1 つまたは複数のサブディレクトリも持ちます。
Web アプリケーションは、次の図に示されている基本的なソース ディレクトリ レイアウトを使用します。
Web アプリケーションの主要なディレクトリとファイルは、以下のとおりです。
helloWebApp\
- Web アプリケーション モジュールの最上位には、JSP ファイルや、アプリケーションで使用される HTML ファイルやグラフィックなどの静的コンテンツを格納できます。静的ファイルは、Web アプリケーションの任意指定のサブディレクトリに格納することもできます (helloWebApp\graphics
や helloWebApp\static
など)。helloWebApp\WEB-INF\
- Web アプリケーションの編集可能なデプロイメント記述子 (web.xml
および weblogic.xml
) は WEB-INF
サブディレクトリに格納します。helloWebApp\WEB-INF\src
- サーブレットの Java ソース ファイルは WEB-INF\src
の下のパッケージ サブディレクトリに格納します。
Web アプリケーションをビルドする際に、appc
Ant タスクと jspc
コンパイラは JSP をビルド ディレクトリの helloWebApp\WEB-INF\classes\jsp_servlet
の下のパッケージ サブディレクトリにコンパイルします。そのビルド プロセスの過程で、編集可能なデプロイメント記述子はコピーされません。
EJB は、次の図に示されているソース ディレクトリ レイアウトを使用します。
EJB の主要なディレクトリとファイルは、以下のとおりです。
helloEJB\
- EJB のソース ファイルはすべて、EJB モジュール ディレクトリのパッケージ ディレクトリに格納します。ソース ファイルは、.java
ソース ファイルかアノテーション付きの .ejb
ファイルのいずれかです。helloEJB\META-INF\
- 編集可能な EJB デプロイメント記述子 (ejb-jar.xml および weblogic-ejb-jar.xml) は EJB モジュール ディレクトリの META-INF
サブディレクトリに格納します。helloWorldEar
サンプルには helloEJB\META-INF
サブディレクトリが含まれていません。その理由は、デプロイメント記述子ファイルが .ejb
ソース ファイルのアノテーションから生成されているためです。「EJB の記述子に関する重要な注意事項」を参照してください。
ビルド プロセスの過程で、EJB クラスはビルド ディレクトリの helloEJB
モジュールのパッケージ サブディレクトリにコンパイルされます。また、アノテーション付きの .ejb
ソース ファイルを使用する場合は、ビルド プロセスで EJB デプロイメント記述子が生成されて、ビルド ディレクトリの helloEJB\META-INF
サブディレクトリに格納されます。
EJB デプロイメント記述子はソース META-INF
ディレクトリに配置し、それらの記述子ファイルがゼロから作成されるか、手作業で編集される場合のみソース コードとして扱ってください。アノテーション付きの .ejb
ファイルから生成された記述子ファイルはビルド ディレクトリにのみ配置され、それらのファイルはアプリケーションをビルドすることで削除および再生成できます。
ある特定の EJB コンポーネントについて、EJB のソース ディレクトリでは以下のいずれかを格納しなければなりません。
つまり、アノテーション付きの .ejb
ソース ファイルと編集可能な記述子ファイルを同じ EJB コンポーネントで提供してはならないということです。
WebLogic 分割開発ディレクトリは、エンタープライズ アプリケーションのモジュールで必要とされる共有ユーティリティ クラスとライブラリの格納にも役立ちます。以降の節では、共有ユーティリティ クラスとサード パーティ JAR ファイルのディレクトリ レイアウトとクラスローディング動作について説明します。
エンタープライズ アプリケーションは、アプリケーション モジュール間で共有される Java ユーティリティ クラスを頻繁に使用します。Java ユーティリティ クラスがサード パーティの JAR と違う点は、ソース ファイルがアプリケーションの一部であり、コンパイルを必要とすることです。Java ユーティリティ クラスは一般に、EJB または Web アプリケーションなどのアプリケーション モジュールで使用されるライブラリです。
Java ユーティリティ クラスのソースは、エンタープライズ アプリケーションの最上位ディレクトリの指定したサブディレクトリに配置します。その指定のサブディレクトリの下では、標準のパッケージ サブディレクトリ規約を使用します。
ビルド プロセスの過程で、wlcompile Ant タスクは javac コンパイラを呼び出し、Java クラスをビルド ディレクトリの下の APP-INF/classes/ ディレクトリにコンパイルします。その結果、デプロイされているアプリケーションの他のモジュールからそれらのクラスが利用可能になります。
エンタープライズ アプリケーションを拡張してサード パーティの .jar ファイルを使用するには、それらのファイルを次のように APP-INF\lib\ ディレクトリに配置します。
サード パーティ JAR は通常はコンパイルされませんが、アプリケーション コードのソース制御システムを使用してバージョニングできます。たとえば、XML パーサ、ロギング実装、および Web アプリケーション フレームワークの JAR ファイルは一般にアプリケーションで使用され、編集可能なソース コードと一緒に維持されます。
ビルド プロセスの過程で、サード パーティ JAR ファイルはビルド ディレクトリにコピーされませんが、デプロイメントのソース ディレクトリに残ります。
APP-INF/classes
と APP-INF/lib
に格納されたクラスとライブラリは、エンタープライズ アプリケーションのすべてのモジュールからアクセスできます。アプリケーションのクラスローダは常に、まず APP-INF/classes
、そして APP-INF/lib
を調べることでクラスの要求を解決しようとします。
ソース ディレクトリ構造をセットアップした後は、weblogic.BuildXMLGen ユーティリティを使用して基本の build.xml ファイルを作成します。weblogic.BuildXMLGen は、分割開発ディレクトリ構造に配置されたエンタープライズ アプリケーションのための Ant build.xml ファイルを生成する便利なユーティリティです。このユーティリティは、ソース ディレクトリを解析して、エンタープライズ アプリケーションならびに個々のモジュールのビルドおよびデプロイ対象を作成します。また、ビルドをクリーンアップして新しいデプロイメント記述子を生成するための対象を生成します。
また、オプション パッケージは、weblogic.BuildXMLGen で Java EE 共有ライブラリとしてサポートされます。そのため、オプション パッケージ参照の検索では、アプリケーションおよびそのモジュールのすべてのマニフェストがスキャンされます。オプション パッケージ参照が見つかると、生成された build.xml
ファイル内の compile および appc
タスクに追加されます。
たとえば、 lib\echolib.jar
に配置されているライブラリをオプション パッケージとして参照する場合、weblogic.BuildXMLGen によって生成されるタスクには次のような appc
タスクが含まれます。
<target name="appc" description="Runs weblogic.appc on your application">
<wlappc source="${dest.dir}" verbose="${verbose}">
<library file="lib\echolib\echolib.jar" />
</wlappc>
</target>
モジュールの compile および appc
タスクでも、lib\echolib\echolib.jar
ライブラリが使用されます。
weblogic.BuildXMLGen の構文は次のとおりです。
java weblogic.BuildXMLGen [オプション] <ソース ディレクトリ>
-librarydir <directories>
- ディレクトリのカンマ区切りのリストで、共有 Java EE ライブラリのビルド ターゲットを作成する。「共有 Java EE ライブラリおよびオプション パッケージの作成」を参照してください。
weblogic.BuildXMLGen を実行した後は、生成された build.xml
ファイルを編集して開発環境のプロパティを指定します。編集する必要のあるプロパティについては、次のコード リストを参照してください。
<!-- ビルド プロパティでは使用する環境にあわせて以下のプロパティを調整する -->
<property name="tmp.dir" value="/tmp" />
<property name="dist.dir" value="${tmp.dir}/dist"/>
<property name="app.name" value="helloWorldEar" />
<property name="ear" value="${dist.dir}/${app.name}.ear"/>
<property name="ear.exploded" value="${dist.dir}/${app.name}_exploded"/>
<property name="verbose" value="true" />
<property name="user" value="USERNAME" />
<property name="password" value="PASSWORD" />
<property name="servername" value="myserver" />
<property name="adminurl" value="iiop://localhost:7001" />
特に、必ず tmp.dir
プロパティを編集して使用するビルド ディレクトリを示します。デフォルトでは、この build.xml
ファイルは、アプリケーションの名前にちなんで名付けられたサブディレクトリ tmp.dir
(上のコード リストでは /tmp/helloWorldEar
) にプロジェクトをビルドします。
次のコード リストは、build.xml
ファイルに作成されたデフォルトのメインの対象を示しています。これらの対象は、EAR ソース ディレクトリで ant -projecthelp
コマンドを入力することでコマンド プロンプトで表示できます。
appc Runs weblogic.appc on your application
build Compiles helloWorldEar application and runs appc
clean Deletes the build and distribution directories
compile Only compiles helloWorldEar application, no appc
compile.appStartup Compiles just the appStartup module of the application
compile.appUtils Compiles just the appUtils module of the application
compile.build.orig Compiles just the build.orig module of the application
compile.helloEJB Compiles just the helloEJB module of the application
compile.helloWebApp Compiles just the helloWebApp module of the application
compile.javadoc Compiles just the javadoc module of the application
deploy Deploys (and redeploys) the entire helloWorldEar application
descriptors Generates application and module descriptors
ear Package a standard J2EE EAR for distribution
ear.exploded Package a standard exploded J2EE EAR
redeploy.appStartup Redeploys just the appStartup module of the application
redeploy.appUtils Redeploys just the appUtils module of the application
redeploy.build.orig Redeploys just the build.orig module of the application
redeploy.helloEJB Redeploys just the helloEJB module of the application
redeploy.helloWebApp Redeploys just the helloWebApp module of application
redeploy.javadoc Redeploys just the javadoc module of the application
undeploy Undeploys the entire helloWorldEar application
これまでに説明した分割開発ディレクトリの例と手順は、1 つのエンタープライズ アプリケーションで構成されたプロジェクトを対象としています。複数のエンタープライズ アプリケーションを同時にビルドする必要があるプロジェクトでは、以降の節で説明されているように規約と手順が少し異なります。
注意 : | 以降の節では、MedRec サンプル アプリケーションが参照されています。このサンプル アプリケーションは、共有ユーティリティ クラス、サード パーティ JAR ファイル、および専用クライアント アプリケーションと、3 つの異なるエンタープライズ アプリケーションで構成されています。MedRec のソース ディレクトリとビルド ディレクトリは、WL_HOME/samples/server/medrec にインストールされます。WL_HOME は、WebLogic Server のインストール ディレクトリです。 |
EAR が 1 つのプロジェクトでは、分割開発ディレクトリの規約はサード パーティ JAR ファイルを EAR ソース ディレクトリの APP-INF/lib
ディレクトリに維持するよう促します。ただし、EAR が複数のプロジェクトでは、同じサード パーティ JAR ファイルのコピーを各 EAR ソース ディレクトリの APP-INF/lib
ディレクトリに保持しなければなりません。この場合、ソース JAR ファイルの複数のコピーが導入され、一部の JAR ファイルが異なるバージョンである可能性が大きくなり、ソース制御システムに追加のスペースが必要となります。
これらの問題を解決するには、構築スクリプトを編集して、ライブラリを必要とする各 EAR のビルド ディレクトリの APP-INF/lib
ディレクトリにサード パーティ JAR ファイルをコピーするようにしてみてください。こうすれば、ソース制御システムで JAR ファイルの 1 つのコピーとバージョンを維持できるだけでなく、プロジェクトの各 EAR で JAR ファイルを使用することができます。
WebLogic Server と一緒にインストールされる MedRec サンプル アプリケーションでは、次の図に示されているようにこの方式を使用します。
MedRec は、プロジェクトの複数の EAR で共有されるユーティリティ クラスでも同様のアプローチをとります。ユーティリティ クラスのソースをそれらを必要とする各 ear のスコープの中に置くのではなく、MedRec はユーティリティ クラスのソースをすべての EAR から独立して維持します。ユーティリティ クラスをコンパイルした後、構築スクリプトはそれらをアーカイブし、ビルド ディレクトリのそれらのクラスを使用する各 EAR の APP-INF/LIB
サブディレクトリに JAR をコピーします (図 3-9 を参照)。
分割開発ディレクトリを使用して複数の EAR を開発する場合、各 EAR プロジェクトは通常それ専用の build.xml
ファイル (おそらく weblogic.BuildXMLGen
の複数回の実行で生成される) を使用します。MedRec のようなアプリケーションでは、アプリケーション スイートの各 EAR の下級の build.xml
ファイルを呼び出すマスター build.xml
ファイルも使用します。
Ant は、マスター build.xml
ファイル内の他のプロジェクト ビルド ファイルを実行できるようにするコア タスク (ant
という名前) を提供します。MedRec のマスター ビルド ファイルから抜粋した次の行は、その使い方を示しています。
<ant inheritAll="false" dir="${root}/startupEar" antfile="build.xml"/>
上のタスクは、/startupEar
サブディレクトリの build.xml
というファイルを実行するように Ant に指示しています。inheritAll
パラメータは、マスター ビルド ファイルのユーザ プロパティのみを /startupEar
の build.xml
ファイルに渡すように Ant に指示しています。
MedRec では、共通のユーティリティ クラスやクライアント アプリケーションをビルドするだけでなく、上のタスクに似た複数のタスクを使用して startupEar
、medrecEar
、および physicianEar
アプリケーションをビルドします。
アプリケーション開発には、以下の「ベスト プラクティス」をお勧めします。
weblogic.jar
ファイルとその他の JAR ファイルにアクセスする必要があります。WebLogic 配布キットのファイルをローカルで使用するには、WebLogic Server を開発用コンピュータにインストールします。
![]() ![]() ![]() |