ヘッダーをスキップ
Oracle Containers for J2EE Orion CMP開発者ガイド
10g(10.1.3.1.0)
B31855-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2 Orion CMPアプリケーション開発の理解

この章ではOrion CMPアプリケーション開発を行う方法を説明します。

この章の内容は次のとおりです。

EJBアプリケーションの開発、パッケージ化およびデプロイ

通常、EJBアプリケーションの開発には次の手順が含まれます。

アプリケーションのデプロイの一環として、アプリケーションをインストールし、フロント・エンドをバインドしてOC4Jを起動する必要があります。

EJBアプリケーション・ディレクトリ構造の理解

アプリケーションはどのように開発することもできますが、アプリケーションを簡単に探せるように一貫したネーミングを使用することをお薦めします。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開発ツールの使用

通常、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の使用

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.xmlapplication-client.xmlに対してデプロイメント・ディスクリプタ・エディタを使用します。

  • OC4Jに対するEARインポート・ウィザードを使用して、JDeveloperのワークスペースとして既存のEARファイルをインポートします(詳細は「EJBアプリケーションの開発、パッケージ化およびデプロイ」を参照)。

図2-1に、JDeveloperの拡張EJBモデリング機能を使用して、データベースからリバース・エンジニアリングされたCMRによるUML図を示します。

図2-1 JDeveloperで生成されたCMRによるUML図

図2-1の説明が続きます
「図2-1 JDeveloperで生成されたCMRによるUML図」の説明

図2-2に、ejb-jar.xmlデプロイメント・ディスクリプタですべてのEJBを編集するための共通ユーザー・インタフェースを提供するEJBモジュール・エディタを示します。エディタの「関連」画面を使用すると、エンティティBean間のコンテナ管理の関連を直観的な方法で追加、編集および削除することができます。

図2-2 JDeveloperのEJBモジュール・エディタ

図2-2の説明が続きます
「図2-2 JDeveloperのEJBモジュール・エディタ」の説明

EJB CMPアプリケーションのパッケージ化とデプロイ

EJBアプリケーションのパッケージ化とデプロイの一般的な手順を次に示します。

  1. デプロイメント・ディスクリプタを作成します。

    クラスを実装してコンパイルした後は、モジュール内のコンテナ管理の永続性を持つすべてのエンティティ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ディレクトリに配置します。

    例2-2 アプリケーションのデプロイメント・ディスクリプタを格納するMETA-INFディレクトリ

    META-INF/
    META-INF/application.xml
    
    
  2. 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
    
    
  3. アセンブリのためのEJBアプリケーションを用意します。

    デプロイのためのアプリケーションを用意するには、次の手順を実行します。

    1. エンタープライズJavaアプリケーションのモジュールでapplication.xmlファイルを修正します。

      application.xmlファイルはアプリケーションのマニフェスト・ファイルとして機能し、エンタープライズ・アプリケーション内に含まれるモジュールの一覧が含まれています。application.xmlファイルで定義されている<module>要素を使用して、表2-1に示されているようなエンタープライズ・アプリケーションの構成要素を指定します。

      表2-1 application.xmlファイルのモジュール要素

      要素 内容

      <ejb>

      EJB JARファイル名

      <web>

      <web-uri>下位要素のWARファイル名と、<context>下位要素にあるそのコンテキスト

      <java>

      クライアント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ファイルを、フル・ディレクトリ・パスではなく名前と相対パスのみで参照します。これらのファイルが親ディレクトリ下のサブディレクトリにある場合は、このサブディレクトリをファイル名に加えて指定する必要があります。

    2. アプリケーションのすべての要素をEARファイルにアーカイブします。

      アプリケーションのJAR、WARおよびXMLファイルを含むEARファイルを作成します。application.xmlファイルがEARマニフェスト・ファイルとして機能する点に注意してください。

      addressbook.earファイルを作成するには、例2-1に示されているaddressbookディレクトリで次の構文を実行します。

      % jar cvf addressbook.ear
      
      

      この手順によって、application.xmladdressbook-ejb.jaraddressbook-web.warおよびaddressbook-client.jarファイルがaddressbook.earファイルにアーカイブされます。

EJBデプロイメント・ディスクリプタ・ファイルの理解

OC4JにデプロイされるCMP EJBアプリケーションで使用する、EJBデプロイメント・ディスクリプタ・ファイルを次に示します。

ejb-jar.xmlファイル

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ファイル

orion-ejb-jar.xmlファイルはすべてのOC4J固有オプションを含むEJBデプロイメント・ディスクリプタ・ファイルです。このファイルはejb-jar.xmlファイル(「ejb-jar.xmlファイル」を参照)で指定した構成を拡張します。

orion-ejb-jar.xmlデプロイメント・ディスクリプタの詳細は、次の章を参照してください。

CMP EJBアプリケーションのOC4Jに対するデプロイ

アプリケーションをEARファイルにアーカイブした後、アプリケーションをOC4Jにデプロイします。アプリケーションのデプロイの詳細は『Oracle Application Server Containers for J2EEユーザーズ・ガイド』を参照してください。