この章ではOrion CMPアプリケーション開発を行う方法を説明します。
この章の内容は次のとおりです。
通常、EJBアプリケーションの開発には次の手順が含まれます。
アプリケーション・ディレクトリ構造の設定。詳細は「EJBアプリケーション・ディレクトリ構造の理解」を参照してください。
コンポーネント・インタフェースの実装。詳細は「エンティティBeanコンポーネント・インタフェースの実装」を参照してください。
Beanクラスの実装。詳細は「エンティティBeanクラスの実装」を参照してください。
ホーム・インタフェースの実装。詳細は「エンティティBeanホーム・インタフェースの実装」を参照してください。
EJBデプロイメント・ディスクリプタの記述。詳細は次のトピックを参照してください。
フロント・エンドの作成。
フロント・エンド固有デプロイメント・ディスクリプタ(Webなど)の記述。
EJBモジュールとフロント・エンド・モジュールをJ2EEアプリケーションに統合する、J2EEアプリケーション定義(デプロイメント・ディスクリプタ)の記述。このデプロイメント・ディスクリプタは、アプリケーションのすべてのモジュールとそのデプロイ方法を定義します。詳細は「EJB CMPアプリケーションのパッケージ化とデプロイ」を参照してください。
コンパイル。
次のアーカイブ・ファイルの作成。
JARファイル: アプリケーションのEJB部分が含まれます。
WARファイル: アプリケーションのWeb部分が含まれます。
EARファイル: 完全にデプロイ可能なJ2EEアプリケーションが含まれます。
注意: Antビルド・ファイルを使用して、すべての.java ファイルをコンパイルし、.jar 、.war および.ear ファイルを作成できます。 |
詳細は次のトピックを参照してください。
アプリケーションのデプロイの一環として、アプリケーションをインストールし、フロント・エンドをバインドしてOC4Jを起動する必要があります。
アプリケーションはどのように開発することもできますが、アプリケーションを簡単に探せるように一貫したネーミングを使用することをお薦めします。1つの方法として、EJBアプリケーションを1つの親ディレクトリ構造の下に実装し、アプリケーションの各モジュールをそのサブディレクトリに分離する方法があります。
ディレクトリ構造には、生成されたファイルのみではなく手動でコーディングされたファイルも含め、すべてのアプリケーション・ファイルが含まれます。
例2-1にaddressbookディレクトリを示します。ディレクトリはホーム・ディレクトリ内の任意の場所(たとえば/home/jane.doe/projects/addressbook/
など)に作成する必要があります。
例2-1 アプリケーション・ディレクトリ構造
addressbook addressbook/etc addressbook/src addressbook/src/java addressbook/src/java/addressbook addressbook/src/java/addressbook/ejb addressbook/src/jsp addressbook/src/web
すべての.java
ソース・ファイルはaddressbook/src/java
の下に置かれます。クライアント・ファイル(この場合はJSP)はsrc/jsp
の下に置かれ、すべての.html
、.gif
、.jpg
および.css
ファイルはaddressbook/src/web
ディレクトリ内に置かれます。
addressbook/etc
ディレクトリには必要とされるすべての.xml
構成ファイルが含まれます。
注意: ディレクトリ構造を作成するには、次の構造のようなシェル(.sh)・ファイル(UNIXおよびLinuxシステムの場合)またはバッチ(.bat)・ファイル(WindowsおよびOS/2システムの場合)のどちらかを使用できます。mkdir addressbook mkdir addressbook\etc mkdir addressbook\src mkdir addressbook\src\java mkdir addressbook\src\java\addressbook mkdir addressbook\src\java\addressbook\ejb mkdir addressbook\src\jsp mkdir addressbook\src\web ディレクトリを作成する対象となるディレクトリ内で、ディレクトリ作成ファイルを実行します。 |
生成されたファイルはlib
およびbuild
ディレクトリ内にあります。これらのディレクトリは通常ビルド・スクリプトで作成されるため、例2-1のディレクトリ構造には含まれていない点に注意してください。
アーカイブは、作成されるとaddressbook/build/
の下に置かれます。
通常、EJB開発ツールには次のようなものがあります。
J2EEパースペクティブ: EJBツールはすべてJ2EEパースペクティブからアクセスできます。このパースペクティブでは、J2EEおよびEJB開発で最も一般的に使用される処理、ビューおよびウィザードに簡単にアクセスできるようなレイアウトが提供されます。
既存のEJB JARファイルをインポートするためのツール。
エンタープライズBeanおよびアクセスBeanを作成するためのツール。EJBツールは、コンテナ管理の永続性を持つエンティティBeanを含むエンタープライズBean(継承ありまたは継承なし)を作成する際に利用できます。EJBデプロイメント・ディスクリプタ・エディタは、エンタープライズBeanに対するデプロイメント・ディスクリプタとアセンブリ・プロパティの設定に利用できます。
また、チームおよびバージョニング機能とともに、補完的なエンタープライズBean開発アクティビティも実施できます。そのアクティビティとはビジネス・ロジックの記述および編集、エンタープライズBeanのインポートまたはエクスポート、ビルトインJava開発ツールを使用したエンタープライズBeanのソース・コードおよび生成済コード双方の管理などです。
また、アクセスBeanを作成して、関連などの他の属性を追加することもできます。アクセスBeanはエンタープライズBeanに対するJava Beanラッパーで、通常はクライアント・プログラムで使用されます。
データ永続性をエンタープライズBeanに構築するためのツール。EJBマッピング・ツールは、エンティティ・エンタープライズBeanをバックエンド・データ・ストア(リレーショナル・データベースなど)にマップする際に利用できます。トップダウン、ボトムアップおよびミートインザミドルのマッピング開発がサポートされています。また、既存のEJB JARファイルからスキーマおよびマップを作成することもできます。
デプロイ・コードを生成するためのツール。EJBツールは、BeanをEJBサーバーで実行できるようにするデプロイ・クラスを生成します。ユーザーは選択したEJBプロジェクトまたはモジュールからウィザードを起動できます。これらのウィザードでは、(1回に1つ以上)デプロイ可能なエンタープライズBeanの一覧が提供されます。これらのツールは、RMI/IIOPスタブやEJBコンテナ固有のデプロイ・コードの生成など、通常デプロイ・クラスの作成に伴う複雑さを感じさせません。
コンテナ管理の永続性を持つエンティティBeanに対するサポートはツールに含まれています。また、ツールを利用して、コンテナ管理の永続性を持つエンティティBeanに対するリレーショナル・データベース表を作成することもできます。デプロイ・コードが生成された後は、EJBサーバーにインストールするために、JARまたはEARファイルにエンタープライズBeanをエクスポートできます。
仕様の準拠についてエンタープライズBeanを検証するためのツール。EJBツールは、エンタープライズBeanに整合性があることと、エンタープライズBeanがEJB仕様で定義されている規則に準拠していることを検証します。
またEJBツールは、アクセスBeanが正しく構成されていることと、アクセスBeanが関連するエンタープライズBeanと一致していることについても自動的に検証します。コード検証は通常、ユーザーがアクセスBeanを作成または編集すると実行されます。
JDeveloper 9.0.3の機能は、概念から実装に至るまで、EJB 2.0のすべての開発機能を網羅しています。
JDeveloperは多数の機能を持つ汎用的なツールです。EJB開発については、JDeveloperで次の処理を実行できます。
ウィザードを使用して、コンテナ管理の永続性を持つEJB 2.0エンティティBeanを開発します。
コンテナ管理の永続性を持つEJB 2.0エンティティBeanとして、データベース表をリバース・エンジニアリングします。
コンテナ管理の永続性を持つEJB 2.0エンティティBeanとして、データベースの外部キー関連をリバース・エンジニアリングします。
EJBモジュール・エディタ(図2-2を参照)を使用して、ejb-jar.xml
デプロイメント・ディスクリプタのすべてのEJBを編集します。
EJBベリファイアを使用して、DTDに対するejb-jar.xml
デプロイメント・ディスクリプタの検証およびEJBクラスの非一貫性の検証を行います。
UML、コードおよびデプロイメント・ディスクリプタを同期化しながら、UMLクラス図でEJBを視覚的に開発します(図2-1を参照)。
ビルトインOC4Jを使用して、EJBをIDEでローカルにテストします。
標準のEJBデプロイ・アーカイブを生成します。
OC4Jに簡単にデプロイします。
デプロイメント・プロファイルでコマンドライン・オプションを渡します。
アプリケーション・デプロイメント・ディスクリプタを追加してアセンブルします(詳細は「EJB CMPアプリケーションのパッケージ化とデプロイ」と「CMP EJBアプリケーションのOC4Jに対するデプロイ」を参照)。
orion-web.xml
とapplication-client.xml
に対してデプロイメント・ディスクリプタ・エディタを使用します。
OC4Jに対するEARインポート・ウィザードを使用して、JDeveloperのワークスペースとして既存のEARファイルをインポートします(詳細は「EJBアプリケーションの開発、パッケージ化およびデプロイ」を参照)。
図2-1に、JDeveloperの拡張EJBモデリング機能を使用して、データベースからリバース・エンジニアリングされたCMRによるUML図を示します。
図2-2に、ejb-jar.xml
デプロイメント・ディスクリプタですべてのEJBを編集するための共通ユーザー・インタフェースを提供するEJBモジュール・エディタを示します。エディタの「関連」画面を使用すると、エンティティBean間のコンテナ管理の関連を直観的な方法で追加、編集および削除することができます。
EJBアプリケーションのパッケージ化とデプロイの一般的な手順を次に示します。
デプロイメント・ディスクリプタを作成します。
クラスを実装してコンパイルした後は、モジュール内のコンテナ管理の永続性を持つすべてのエンティティBeanに対する、標準EJBデプロイメント・ディスクリプタを作成する必要があります。ejb-jar.xml
ファイル(「ejb-jar.xmlファイル」を参照)で定義されたXMLデプロイメント・ディスクリプタが、アプリケーションのEJBモジュールを記述します。これはBeanのタイプ、名前および属性を記述します。このファイルの構造はDTDファイル(このファイルにはhttp://java.sun.com/dtd/ejb-jar_2_0.dtd
でアクセスできます)で規定されています。
構成対象のOC4Jサービスもすべてデプロイメント・ディスクリプタで明示されています。次のコンテナ・サービスの詳細は『Oracle Containers for J2EEサービス・ガイド』を参照してください。
データ・ソース
JTA
JNDI
JMS
RMIとRMI/IIOP
JCA
Java Object Cache
HTTPS
次のコンテナ・サービスの詳細は『Oracle Containers for J2EEセキュリティ・ガイド』を参照してください。
セキュリティ
CSv2
Webサービスの詳細は『Oracle Application Server Web Services開発者ガイド』を参照してください。
作成した後は、例2-2のように、EJBアプリケーションのデプロイメント・ディスクリプタを、EJBクラスと同じディレクトリにあるMETA-INF
ディレクトリに配置します。
EJBアプリケーションをアーカイブします。
実装が完了しデプロイメント・ディスクリプタを作成したら、EJBアプリケーションをJARファイルにアーカイブします。JARファイルにはすべてのEJBアプリケーション・ファイルとデプロイメント・ディスクリプタを格納します。
たとえば、addressbookの例(例2-1を参照)におけるコンパイル済EJBクラス・ファイルおよびXMLファイルをJARファイルにアーカイブするには、.../addressbook/ejb
ディレクトリで次の構文を実行します。
% jar cvf addressbook-ejb.jar
これによってejb
サブディレクトリに含まれるすべてのファイルがJARファイル内にアーカイブされます。
META-INF/ META-INF/ejb-jar.xml addressbook/ addressbook/ejb/AddressEntry.class addressbook/ejb/AddressBook.class addressbook/ejb/AddressEntryBean.class
アセンブリのためのEJBアプリケーションを用意します。
デプロイのためのアプリケーションを用意するには、次の手順を実行します。
エンタープライズJavaアプリケーションのモジュールでapplication.xml
ファイルを修正します。
application.xml
ファイルはアプリケーションのマニフェスト・ファイルとして機能し、エンタープライズ・アプリケーション内に含まれるモジュールの一覧が含まれています。application.xml
ファイルで定義されている<module>
要素を使用して、表2-1に示されているようなエンタープライズ・アプリケーションの構成要素を指定します。
表2-1 application.xmlファイルのモジュール要素
要素 | 内容 |
---|---|
EJB JARファイル名 |
|
|
|
クライアントJARファイル名(ある場合) |
例2-2に示されているように、application.xml
ファイルはアプリケーションの親ディレクトリの下のMETA-INF
ディレクトリ下に配置されます。JARファイル、WARファイルおよびクライアントJARファイルは、次のようにこのディレクトリ内に格納する必要があります。
META-INF/ META-INF/application.xml addressbook-ejb.jar addressbook-web.war
保存場所が近いため、application.xml
ファイルはJARおよびWARファイルを、フル・ディレクトリ・パスではなく名前と相対パスのみで参照します。これらのファイルが親ディレクトリ下のサブディレクトリにある場合は、このサブディレクトリをファイル名に加えて指定する必要があります。
アプリケーションのすべての要素をEARファイルにアーカイブします。
アプリケーションのJAR、WARおよびXMLファイルを含むEARファイルを作成します。application.xml
ファイルがEARマニフェスト・ファイルとして機能する点に注意してください。
addressbook.ear
ファイルを作成するには、例2-1に示されているaddressbook
ディレクトリで次の構文を実行します。
% jar cvf addressbook.ear
この手順によって、application.xml
、addressbook-ejb.jar
、addressbook-web.war
およびaddressbook-client.jar
ファイルがaddressbook.ear
ファイルにアーカイブされます。
OC4JにデプロイされるCMP EJBアプリケーションで使用する、EJBデプロイメント・ディスクリプタ・ファイルを次に示します。
ejb-jar.xml
ファイルはEJBデプロイメント・ディスクリプタ・ファイルで、使用する場合は次の情報を記述します。
格納されているすべてのエンタープライズBeanに関する必須構成情報
コンテナ管理の関連に対するディスクリプタ(ある場合)
ejb-jar.xml
ファイルに対するejb-client-jar.xml
ファイルのオプション名
オプションのアプリケーション・アセンブリ・ディスクリプタ
必要である場合、ejb-jar.xml
ファイルはあらゆるJ2EEアプリケーション・サーバーに適用可能なEJB情報を記述します。この情報は、アプリケーション・サーバー固有のEJBデプロイメント・ディスクリプタ・ファイル(「orion-ejb-jar.xmlファイル」を参照)によって増える場合があります。
orion-ejb-jar.xml
ファイルはすべてのOC4J固有オプションを含むEJBデプロイメント・ディスクリプタ・ファイルです。このファイルはejb-jar.xml
ファイル(「ejb-jar.xmlファイル」を参照)で指定した構成を拡張します。
orion-ejb-jar.xml
デプロイメント・ディスクリプタの詳細は、次の章を参照してください。
アプリケーションをEARファイルにアーカイブした後、アプリケーションをOC4Jにデプロイします。アプリケーションのデプロイの詳細は『Oracle Application Server Containers for J2EEユーザーズ・ガイド』を参照してください。