Avitek Medical Record 開発チュートリアル

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

 


MedRec アプリケーションの開発

 


チュートリアル 6 : WebLogic Server の分割ディレクトリ構造について

medrec_tutorial プロジェクト ディレクトリ内のいくつかのサブディレクトリ (medrecEarphysicianEarstartBrowserEar) では、ソース ファイルの格納に WebLogic Server 分割開発ディレクトリ構造が使用されます。分割開発ディレクトリは、CLASSPATH の依存関係を自動的に維持しながら、エンタープライズ アプリケーション ファイルのビルド、デプロイ、パッケージ化を簡単に行えるディレクトリ レイアウトと補助的な Ant タスクで構成されます。ソース ファイルと編集可能なデプロイメント記述子を含むディレクトリと、コンパイルされたクラス ファイルと生成されたデプロイメント記述子が保存されるディレクトリが異なるため、ディレクトリ構造が分割されています。

分割開発ディレクトリ構造は、独自のアプリケーション開発に使用する重要なツールです。ソース ファイルと生成されたファイルが別々に保存されるため、開発プロジェクトとソース制御システムを簡単に統合できます。分割開発ディレクトリでは、アプリケーションのデプロイも簡単に行えます。最初にファイルをコピーしてアプリケーションをステージングする必要はありません。アプリケーションをデプロイするときに、自動的にビルド ディレクトリとソース ディレクトリの両方の内容が使用されます。

このチュートリアルでは、MedRec アプリケーション スイートで使用されるソース ディレクトリ構造のレイアウトと機能について説明します。次のチュートリアルでは、wlcompile タスクを使用してエンタープライズ アプリケーションをコンパイルしたときに生成されるビルド ディレクトリ構造について説明します。ソース ディレクトリとビルド ディレクトリは共に、後続のチュートリアルでデプロイおよびパッケージ化する WebLogic 分割開発ディレクトリを構成します。

このチュートリアルは、以下の節で構成されています。

 


前提条件

このチュートリアルを始める前に、「チュートリアル 5 : MedRec プロジェクト ディレクトリの作成」の手順に従ってプロジェクト ディレクトリを作成し、そこに MedRec チュートリアルのソース ファイルを復元します。

 


手順

次の手順に従って、MedRec アプリケーション スイートのソース ディレクトリ構造について学習します。

手順 1 : エンタープライズ アプリケーションのディレクトリ構造を調べる

WebLogic 分割開発ディレクトリには、エンタープライズ アプリケーション (EAR) レベル以下のソース ファイルが格納されます。開発している Web アプリケーションまたは EJB が 1 つだけの場合でも、エンタープライズ アプリケーションを表す最上位のディレクトリに関連するコンポーネントを格納します。physicianEar サブディレクトリの内容に注目してください。

prompt> cd c:\medrec_tutorial\src\physicianEar
prompt> dir
 Directory of C:\medrec_tutorial\src\physicianEar
07/24/2006  02:49 PM    <DIR>          .
07/24/2006 02:49 PM <DIR> ..
07/24/2006 02:42 PM 59,583 build.html
07/24/2006 02:42 PM 10,381 build.xml
07/24/2006 02:42 PM 592 ejbgen_tutorial.xml
07/24/2006 02:49 PM <DIR> META-INF
07/24/2006 02:49 PM <DIR> physicianWebApp
07/24/2006 02:42 PM <DIR> physSessionEjbs
07/24/2006 02:42 PM <DIR> webServices
07/24/2006 02:42 PM 284 wlcompile_tutorial.xml
07/24/2006 02:42 PM 381 wldeploy_tutorial.xml
07/24/2006 02:42 PM 1,000 ws_ejb_client_tutorial.xml

ディレクトリのリストから、Physician アプリケーションには、Web アプリケーション コンポーネント (physicianWebApp ディレクトリに格納)、EJB コンポーネント (physSessionEjbs ディレクトリに格納)、および Web サービス (webServices ディレクトリに格納) が含まれることがわかります。分割開発ディレクトリ構造では、各 EAR コンポーネントが専用のソース ディレクトリに置かれている必要があります。コンポーネントの種類は、wlcompile Ant タスクによりコンパイル時に自動的に決定されるため、ear ディレクトリとコンポーネント サブディレクトリには自由に名前を付けることができます。

META-INF サブディレクトリには、エンタープライズ アプリケーション自体のデプロイメント記述子 (application.xml と省略可能な weblogic-application.xml ファイル) が保持されます。

Note: 各種の *_tutorial.xml ファイルはチュートリアル関連のファイルです。

手順 2 : Web アプリケーション コンポーネントのディレクトリ構造を調べる

MedRec の Web アプリケーションは Struts を使用して開発されます。Struts は Apache Jakarta プロジェクトで開発されたオープン ソースの Web フレームワークです。

ソース ディレクトリ構造で、Web アプリケーションを構成するさまざまなファイル タイプ (JSP、サーブレット、Struts フレームワークで必要なファイルなど) を簡単に管理できます。physicianEar ソース ディレクトリ内の physicianWebApp サブディレクトリに移動して、その内容を調べます。

prompt> cd c:\medrec_tutorial\src\physicianEar\physicianWebApp
prompt> dir
 Directory of C:\medrec_tutorial\src\physicianEar\physicianWebApp
07/24/2006  02:49 PM    <DIR>          .
07/24/2006 02:49 PM <DIR> ..
07/24/2006 02:42 PM 12,950 Confirmation.html
07/24/2006 02:42 PM 1,639 Confirmation.jsp
07/24/2006 02:42 PM 41,763 CreatePrescription.html
07/24/2006 02:42 PM 5,389 CreatePrescription.jsp
07/24/2006 02:42 PM 87,839 CreateVisit.html
07/24/2006 02:42 PM 11,961 CreateVisit.jsp
07/24/2006 02:42 PM 14,708 Error.html
07/24/2006 02:42 PM 1,905 Error.jsp
07/24/2006 02:42 PM 32,486 Login.html
07/24/2006 02:42 PM 4,074 Login.jsp
07/24/2006 02:42 PM 15,377 PatientHeader.html
07/24/2006 02:42 PM 2,309 PatientHeader.jsp
07/24/2006 02:42 PM 7,365 PhysicianHeader.html
07/24/2006 02:42 PM 964 PhysicianHeader.jsp
07/24/2006 02:42 PM 30,765 Search.html
07/24/2006 02:42 PM 3,896 Search.jsp
07/24/2006 02:42 PM 29,938 SearchResults.html
07/24/2006 02:42 PM 4,243 SearchResults.jsp
07/24/2006 02:42 PM 5,971 stylesheet.css
07/24/2006 02:42 PM 24,957 ViewProfile.html
07/24/2006 02:42 PM 3,742 ViewProfile.jsp
07/24/2006 02:42 PM 46,175 ViewRecord.html
07/24/2006 02:42 PM 6,707 ViewRecord.jsp
07/24/2006 02:42 PM 37,675 ViewRecords.html
07/24/2006 02:42 PM 5,504 ViewRecords.jsp
07/24/2006 02:49 PM <DIR> WEB-INF

Web アプリケーション サブディレクトリの最上位には、アプリケーションを構成する JSP が含まれます。各 JSP に対応する HTML ファイルもあります。この HTML ファイルは JSP コードを単に HTML 形式で表示するもので、読みやすいように行番号付きで色分けされています。これらの HTML ファイルはチュートリアルのためにのみ含まれています。通常は、これらの HTML ファイルをアプリケーションに含めないでください。ここに追加の .html ファイルやその他の静的なコンテンツ (画像ファイルなど) も格納できますが、これらのコンテンツは専用のサブディレクトリ (\html_files\images など) に格納する方が、扱いが簡単になります。

サーブレット (Struts の用語では「アクション」) や補助的なユーティリティ クラスなどの Web アプリケーション コンポーネントの Java ソース ファイルは、コンポーネントの WEB-INF\src サブディレクトリの下のパッケージ ディレクトリに格納されます。たとえば、Physician Web アプリケーションのユーティリティ クラスは、C:\medrec_tutorial\src\physicianEar\physicianWebApp\WEB-INF\src\com\bea\medrec\actions\PhysicianConstants.java に格納されます。

wlcompile タスクにより、WEB-INF\src サブディレクトリの内容が自動的にアプリケーションの出力ディレクトリの WEB-INF\classes サブディレクトリにコンパイルされ、Web アプリケーションのすべてのコンポーネントからこれらのクラスにアクセスできるようになります。

WEB-INF サブディレクトリには、Web アプリケーション コンポーネントのデプロイメント記述子 (web.xml と省略可能な weblogic.xml) や Struts 関連のファイル (struts-config.xml など) も格納されます。

physician Web アプリケーションで使用される画像は physicianWebApp ディレクトリには格納されませんが、すべての MedRec アプリケーションが共有している共通のディレクトリに格納されます。physician Web アプリケーションの weblogic.xml デプロイメント記述子ファイルでは、以下のように、これらの画像の実際の場所を指定する仮想ディレクトリを定義します。

  <virtual-directory-mapping>
<local-path>c:/medrec_tutorial/src/common/web</local-path>
<url-pattern>images/*</url-pattern>
</virtual-directory-mapping>

手順 3 : EJB コンポーネントのディレクトリ構造を調べる

EJB コンポーネントの Java ソース ファイルは、EJB のパッケージ構造を反映したサブディレクトリに格納されます。たとえば、Physician アプリケーションのセッション EJB のソースは、C:\medrec_tutorial\src\physicianEar\physSessionEjbs\com\bea\medrec\controller\PhysicianSessionEJB.ejb に格納されます。

EJB コンポーネントのデプロイメント記述子 (ejb-jar.xml と省略可能な weblogic-ejb-jar.xml など) は、コンポーネントの META-INF サブディレクトリに格納できます。ただし、physSessionEjbs サブディレクトリを見ると、META-INF サブディレクトリがありません。これは、MedRec アプリケーション スイートのすべての EJB が、デプロイメント記述子ファイルで定義するのではなく、ejbgen メタデータ アノテーションを使用して EJB の形式と動作を指定するためです。ejbgen アノテーションは、新しい JDK 5.0 メタデータ アノテーションの機能に基づいています。wlcompile Ant タスクは、*.ejb ファイルを処理するときに EJBGen ユーティリティを呼び出します。EJBGen ユーティリティはこれらのアノテーションを使用して、アプリケーションのコンパイル時に自動的に EJB デプロイメント記述子を生成します。

手順 4 : Web サービスのディレクトリ構造を調べる

J2EE Web サービス コンポーネントの Java ソース ファイルは、Web サービスのパッケージ構造を反映したサブディレクトリに格納されます。たとえば、Physician Web サービス (medrecEar アプリケーションの Web サービスを確実に呼び出す) のソースは C:\medrec_tutorial\src\physicianEar\webServices\com\bea\medrec\webservices\PhysicianWebServices.java に格納されます。

MedRec アプリケーション スイートのすべての Web サービスは Java Web サービス (JWS) ファイルを使用して実装されます。JWS ファイルは Web サービスの中心部分であり、Web サービスの動作を決定する Java コードが含まれています。JWS ファイルは、JDK 5.0 メタデータ アノテーションを使用して Web サービスの形式や特性を指定した、通常の Java クラス ファイルです。JWS ファイルで使用できる JWS アノテーションには、Web Services Metadata for the Java Platform 仕様 (JSR-181) で定義された標準のアノテーションと、WebLogic 固有のアノテーションがあります。

MedRec アプリケーションは jwsc Web サービス Ant タスクを使用して、JWS ファイルをデプロイ可能な Web サービスにコンパイルします。Enterprise Web Services 1.1 仕様 (JSR-921) で定義されているように、Web サービスはプレーンな Java クラス (Web アプリケーション WAR としてパッケージ化) またはステートレス セッション EJB (EJB JAR としてパッケージ化) によって実装できます。jwsc Ant タスクは、生成するバックエンド コンポーネントの種類を自動的に決定して、デプロイメント記述子、ユーザ定義のデータ型コンポーネント、WSDL ファイルなどのサポート ファイルをすべて生成します。したがって、ejbgen アノテーションを使用する EJB と同様に、Web サービスを記述した JWS ファイルのみが \src ディレクトリに格納されます。

Note: このリリースの WebLogic Server では、wlcompile Ant タスクは JWS ファイルで実装された Web サービスをコンパイルしません。代わりに、wlcompile タスクを呼び出して EJB などの他のすべてのコンポーネントをコンパイルする前に、jwsc Web サービス Ant タスクを明示的に呼び出して Web サービスを生成する必要があります。jwsc の詳細については、「チュートリアル 11 : JWS ファイルのプログラミングによる J2EE Web サービスの作成」で説明します。

 


ベスト プラクティス

 


全体像

MedRec アプリケーション スイートでは、3 つの分割開発ディレクトリを使用して、medrecEarphysicianEar、および startBrowserEar の各アプリケーションのソースを保持します。これらのアプリケーション間で共有されるユーティリティ クラスは、分割ディレクトリ構造を使用しないカスタム ビルド スクリプトと共に、専用の common ディレクトリに格納されます。セキュリティ コンポーネントもカスタム ビルド ディレクトリにステージングされます。

最上位の build.xml ファイルが MedRec ソース ディレクトリを検索し、すべてのコンポーネントのビルドを即座に調整します。

wlcompile Ant タスクによるビルド時に、ほとんどのコンポーネント依存関係が自動的に維持されますが、medrecEarphysicianEar などの特定の分割開発ディレクトリではビルド順序がハードコード化されて依存関係が強制的に設定されます。このチュートリアルで作成したソース ディレクトリ構造には、依存関係を意識せずに新しい WebLogic Server Ant タスクを使用してビルドできる中間手順が含まれます。

 


関連情報


  ページの先頭       前  次