WebLogic Server アプリケーションの開発

     前  次    新しいウィンドウで目次を開く   
ここから内容の開始

分割開発ディレクトリ環境の作成

以下の節では、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 コードからデプロイメント記述子ファイルを生成することができます。

図 3-1 ソース ディレクトリとビルド ディレクトリ

ソース ディレクトリとビルド ディレクトリ

ビルド ディレクトリには、ビルド プロセスで生成されたファイルのみが格納されます。ソース ディレクトリとビルド ディレクトリのファイルを組み合わせることにより、デプロイ可能な Java EE アプリケーションになります。

ビルド ディレクトリとソース ディレクトリの内容は、任意に選択したディレクトリに配置できます。ただし、使いやすいように、それらのディレクトリは 1 つのプロジェクト ディレクトリの中の source および build というディレクトリに配置されます (たとえば、\myproject\build および \myproject\source)。

分割開発ディレクトリからのデプロイメント

すべての WebLogic Server デプロイメント ツール (weblogic.Deployerwldeploy、および 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 ファイルを使用して、必要なリソースのあるアプリケーションのソース ディレクトリを見つけます。

図 3-2 分割ディレクトリのデプロイメント

分割ディレクトリのデプロイメント

分割開発ディレクトリにおける Ant タスク

Oracle では、分割開発ディレクトリ環境を使用したアプリケーションの開発を支援する Ant タスクのコレクションを用意しています。各 Ant タスクは、ソース ディレクトリ、ビルド ディレクトリ、またはその両方を使用して一般的な開発タスクを実行します。

 


分割開発ディレクトリ構造の使い方 : 主な手順

次の手順では、分割開発ディレクトリ構造を使用して WebLogic Server アプリケーションをビルドおよびデプロイする方法を示します。

  1. プロジェクトのメインの EAR ソース ディレクトリを作成します。分割開発ディレクトリ環境を使用する場合は、複数の Java EE モジュールを開発するわけではない場合でも、Web アプリケーションと EJB をエンタープライズ アプリケーションの一部として開発する必要があります。「分割開発ディレクトリでの Java EE コンポーネントの配置」を参照してください。
  2. Web アプリケーション、EJB コンポーネント、または共有ユーティリティ クラスのソースを格納するための、1 つまたは複数のサブディレクトリを EAR ディレクトリに追加します。「分割開発ディレクトリでの Java EE コンポーネントの配置」および「分割開発ディレクトリでの共有クラスの配置」を参照してください。
  3. モジュールのすべての編集可能なファイル (ソース コード、静的コンテンツ、編集可能なデプロイメント記述子) を EAR ディレクトリのサブディレクトリに格納します。必要に応じて、ソース ディレクトリの全内容をソース制御システムに追加します。
  4. setWLSEnv.cmd (Windows) または setWLSEnv.sh (UNIX) スクリプトを実行して WebLogic Server 環境を設定します。それらのスクリプトは、WL_HOME\server\bin\ ディレクトリにあります。WL_HOME は、WebLogic Server のインストール先の最上位ディレクトリです。
  5. weblogic.BuildXMLGen ユーティリティを使用して、プロジェクトで使用するデフォルトの build.xml ファイルを生成します。環境の必要に応じて、デフォルトのプロパティ値を編集します。「weblogic.BuildXMLGen を使用した基本的な build.xml ファイルの生成」を参照してください。
  6. build.xml ファイルのデフォルトの対象を使用して、アプリケーションをビルド、デプロイ、およびパッケージ化します。デフォルトの対象のリストについては、「weblogic.BuildXMLGen を使用した基本的な build.xml ファイルの生成」を参照してください。

 


分割開発ディレクトリでの Java EE コンポーネントの配置

分割開発ディレクトリ構造では、各プロジェクトを Java EE エンタープライズ アプリケーションとしてステージングすることが求められます。したがって、分割ディレクトリの Ant タスクをうまく利用するには、スタンドアロンの Web アプリケーションや EJB でもエンタープライズ アプリケーションのモジュールとしてステージングすることをお勧めします。このプラクティスを行うことで、後日モジュールを簡単に追加または削除することもできます (アプリケーションがすでに EAR として構成されているため)。

注意 : プロジェクトで複数の EAR が必要な場合は、「分割開発ディレクトリを使用した複数 EAR プロジェクトの開発」も参照してください。

以降の節では、分割開発ディレクトリ構造で以下のモジュール タイプをステージングするための基本規約を説明します。

ディレクトリの例は、WL_HOME\samples\server\examples\src\examples\splitdir にインストールされた splitdir サンプル アプリケーションから利用します。WL_HOME は WebLogic Server のインストール ディレクトリです。

ソース ディレクトリの概要

次の図は、Web アプリケーション、EJB、共有ユーティリティ クラス、およびサード パーティ ライブラリを持つエンタープライズ アプリケーションのソース ディレクトリの内容をまとめたものです。以降の節では、エンタープライズ ソース ディレクトリの個々の要素がどのように配置されるのかを詳しく説明します。

図 3-3 エンタープライズ アプリケーションのソース ディレクトリの概要

エンタープライズ アプリケーションのソース ディレクトリの概要

エンタープライズ アプリケーションのコンフィグレーション

分割開発ディレクトリ プロジェクトの最上位ソース ディレクトリは、エンタープライズ アプリケーションを表します。次の図は、このディレクトリに必要な最小限のファイルとディレクトリを示しています。

図 3-4 エンタープライズ アプリケーションのソース ディレクトリ

エンタープライズ アプリケーションのソース ディレクトリ

エンタープライズ アプリケーション ディレクトリは、以降の節で説明されるように Web アプリケーション、EJB、ユーティリティ クラス、サード パーティ Jar ファイルなどを保持する 1 つまたは複数のサブディレクトリも持ちます。

Web アプリケーション

Web アプリケーションは、次の図に示されている基本的なソース ディレクトリ レイアウトを使用します。

図 3-5 Web アプリケーションのソース ディレクトリとビルド ディレクトリ

Web アプリケーションのソース ディレクトリとビルド ディレクトリ

Web アプリケーションの主要なディレクトリとファイルは、以下のとおりです。

Web アプリケーションをビルドする際に、appc Ant タスクと jspc コンパイラは JSP をビルド ディレクトリの helloWebApp\WEB-INF\classes\jsp_servlet の下のパッケージ サブディレクトリにコンパイルします。そのビルド プロセスの過程で、編集可能なデプロイメント記述子はコピーされません。

EJB

EJB は、次の図に示されているソース ディレクトリ レイアウトを使用します。

図 3-6 EJB のソース ディレクトリとビルド ディレクトリ

EJB のソース ディレクトリとビルド ディレクトリ

EJB の主要なディレクトリとファイルは、以下のとおりです。

ビルド プロセスの過程で、EJB クラスはビルド ディレクトリの helloEJB モジュールのパッケージ サブディレクトリにコンパイルされます。また、アノテーション付きの .ejb ソース ファイルを使用する場合は、ビルド プロセスで EJB デプロイメント記述子が生成されて、ビルド ディレクトリの helloEJB\META-INF サブディレクトリに格納されます。

EJB の記述子に関する重要な注意事項

EJB デプロイメント記述子はソース META-INF ディレクトリに配置し、それらの記述子ファイルがゼロから作成されるか、手作業で編集される場合のみソース コードとして扱ってください。アノテーション付きの .ejb ファイルから生成された記述子ファイルはビルド ディレクトリにのみ配置され、それらのファイルはアプリケーションをビルドすることで削除および再生成できます。

ある特定の EJB コンポーネントについて、EJB のソース ディレクトリでは以下のいずれかを格納しなければなりません。

または

つまり、アノテーション付きの .ejb ソース ファイルと編集可能な記述子ファイルを同じ EJB コンポーネントで提供してはならないということです。

 


分割開発ディレクトリでの共有クラスの配置

WebLogic 分割開発ディレクトリは、エンタープライズ アプリケーションのモジュールで必要とされる共有ユーティリティ クラスとライブラリの格納にも役立ちます。以降の節では、共有ユーティリティ クラスとサード パーティ JAR ファイルのディレクトリ レイアウトとクラスローディング動作について説明します。

共有ユーティリティ クラス

エンタープライズ アプリケーションは、アプリケーション モジュール間で共有される Java ユーティリティ クラスを頻繁に使用します。Java ユーティリティ クラスがサード パーティの JAR と違う点は、ソース ファイルがアプリケーションの一部であり、コンパイルを必要とすることです。Java ユーティリティ クラスは一般に、EJB または Web アプリケーションなどのアプリケーション モジュールで使用されるライブラリです。

図 3-7 Java ユーティリティ クラスのディレクトリ

Java ユーティリティ クラスのディレクトリ

Java ユーティリティ クラスのソースは、エンタープライズ アプリケーションの最上位ディレクトリの指定したサブディレクトリに配置します。その指定のサブディレクトリの下では、標準のパッケージ サブディレクトリ規約を使用します。

ビルド プロセスの過程で、wlcompile Ant タスクは javac コンパイラを呼び出し、Java クラスをビルド ディレクトリの下の APP-INF/classes/ ディレクトリにコンパイルします。その結果、デプロイされているアプリケーションの他のモジュールからそれらのクラスが利用可能になります。

サード パーティ ライブラリ

エンタープライズ アプリケーションを拡張してサード パーティの .jar ファイルを使用するには、それらのファイルを次のように APP-INF\lib\ ディレクトリに配置します。

図 3-8 サード パーティ ライブラリのディレクトリ

サード パーティ ライブラリのディレクトリ

サード パーティ JAR は通常はコンパイルされませんが、アプリケーション コードのソース制御システムを使用してバージョニングできます。たとえば、XML パーサ、ロギング実装、および Web アプリケーション フレームワークの JAR ファイルは一般にアプリケーションで使用され、編集可能なソース コードと一緒に維持されます。

ビルド プロセスの過程で、サード パーティ JAR ファイルはビルド ディレクトリにコピーされませんが、デプロイメントのソース ディレクトリに残ります。

共有クラスのクラス ローディング

APP-INF/classesAPP-INF/lib に格納されたクラスとライブラリは、エンタープライズ アプリケーションのすべてのモジュールからアクセスできます。アプリケーションのクラスローダは常に、まず APP-INF/classes、そして APP-INF/lib を調べることでクラスの要求を解決しようとします。

 


weblogic.BuildXMLGen を使用した基本的な build.xml ファイルの生成

ソース ディレクトリ構造をセットアップした後は、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 構文

weblogic.BuildXMLGen の構文は次のとおりです。

java weblogic.BuildXMLGen [オプション] <ソース ディレクトリ>

オプションには以下を指定できます。

weblogic.BuildXMLGen を実行した後は、生成された build.xml ファイルを編集して開発環境のプロパティを指定します。編集する必要のあるプロパティについては、次のコード リストを参照してください。

コード リスト 3-1 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 コマンドを入力することでコマンド プロンプトで表示できます。

コード リスト 3-2 デフォルトの build.xml のターゲット
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

 


分割開発ディレクトリを使用した複数 EAR プロジェクトの開発

これまでに説明した分割開発ディレクトリの例と手順は、1 つのエンタープライズ アプリケーションで構成されたプロジェクトを対象としています。複数のエンタープライズ アプリケーションを同時にビルドする必要があるプロジェクトでは、以降の節で説明されているように規約と手順が少し異なります。

注意 : 以降の節では、MedRec サンプル アプリケーションが参照されています。このサンプル アプリケーションは、共有ユーティリティ クラス、サード パーティ JAR ファイル、および専用クライアント アプリケーションと、3 つの異なるエンタープライズ アプリケーションで構成されています。MedRec のソース ディレクトリとビルド ディレクトリは、WL_HOME/samples/server/medrec にインストールされます。WL_HOME は、WebLogic Server のインストール ディレクトリです。

複数の EAR で共有されるライブラリとクラスの配置

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 サンプル アプリケーションでは、次の図に示されているようにこの方式を使用します。

図 3-9 MedRec の共有 JAR ファイル

MedRec の共有 JAR ファイル

MedRec は、プロジェクトの複数の EAR で共有されるユーティリティ クラスでも同様のアプローチをとります。ユーティリティ クラスのソースをそれらを必要とする各 ear のスコープの中に置くのではなく、MedRec はユーティリティ クラスのソースをすべての EAR から独立して維持します。ユーティリティ クラスをコンパイルした後、構築スクリプトはそれらをアーカイブし、ビルド ディレクトリのそれらのクラスを使用する各 EAR の APP-INF/LIB サブディレクトリに JAR をコピーします (図 3-9 を参照)。

複数の build.xml ファイルのリンク

分割開発ディレクトリを使用して複数の 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 パラメータは、マスター ビルド ファイルのユーザ プロパティのみを /startupEarbuild.xml ファイルに渡すように Ant に指示しています。

MedRec では、共通のユーティリティ クラスやクライアント アプリケーションをビルドするだけでなく、上のタスクに似た複数のタスクを使用して startupEarmedrecEar、および physicianEar アプリケーションをビルドします。

 


WebLogic Server アプリケーション開発のベスト プラクティス

アプリケーション開発には、以下の「ベスト プラクティス」をお勧めします。


ページの先頭       前  次