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

戻る
戻る
 
次へ
次へ
 

3 OC4JにおけるOrion CMPサポートの理解

この章では、OC4Jで使用可能な2種類の永続性マネージャについて説明し、永続性マネージャ(Orion)から別の永続性マネージャ(TopLink)に移行する際の詳細な手順も説明します。

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

EJB 2.0サポート

OC4J EJBコンテナはEJB 2.0を完全にサポートしており、そのサポート対象には次のようなものがあります。

OC4Jには、オブジェクト・リレーショナル・マッピングをサポートするエンティティBeanに対するCMP実装が用意されています。OC4Jは1対1、1対多、多対1および多対多のオブジェクト・リレーショナル・マッピング(「コンテナ管理の関連」を参照)をサポートします。これには単一、プリミティブおよびシリアライズ可能オブジェクトに対する単一的なオブジェクト・リレーショナル・マッピングのみでなく、複合オブジェクト、エンティティ参照および集合に対する複合的なオブジェクト・リレーショナル・マッピングのサポートも含まれます。

Orion永続性マネージャ(「Orion永続性マネージャ」を参照)を使用して、EJB 2.0エンティティBeanが永続するようにOC4Jを使用できます。


注意:

Orion永続性マネージャ(「Orion永続性マネージャ」を参照)とTopLink永続性マネージャ(「TopLink永続性マネージャ」を参照)の主な違いは、Orion永続性マネージャがEJB 2.0エンティティBeanのサポートに限られているのに対し、TopLink永続性マネージャがEJB 2.1エンティティBeanおよびEJB 3.0エンティティをサポートすることです。

永続性マネージャ

EJBコンテナは永続性マネージャを使用し、エンティティBeanからデータベースに対してデータを持続します。永続性マネージャの機能の一覧を次に示します。

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

Orion永続性マネージャ

Orion永続性マネージャとTopLink永続性マネージャ(「TopLink永続性マネージャ」を参照)の主な違いは、Orion永続性マネージャがEJB 2.0エンティティBeanのみをサポートするのに対し、TopLink永続性マネージャはEJB 2.1エンティティBeanのみでなくEJB 3.0エンティティもサポートすることです。

Orion永続性マネージャは廃止予定であり、今後のリリースではサポートされません。オラクル社では、新規の開発にはOC4JおよびTopLink永続性マネージャを使用することをお薦めします。移行ツールを使用すると(「TopLink永続性マネージャへの移行」を参照)、Orion永続性マネージャとともにEJB 2.0エンティティBeanを使用する既存のOC4Jアプリケーションを、TopLink永続性マネージャ(「TopLink永続性マネージャ」を参照)とともにEJB 2.0エンティティBeanを使用するように簡単に移行できます。

TopLink永続性マネージャ

Oracle TopLinkは高度なオブジェクト永続およびオブジェクト変換のためのフレームワークです。TopLinkには、開発および保守の工数を削減するだけでなく、エンタープライズ・アプリケーション機能を強化する開発ツールとランタイム機能が備わっています。

TopLinkを利用して、リレーショナル・データベースに永続オブジェクト指向データを格納する高パフォーマンスなアプリケーションを構築できます。これはオブジェクト指向データをリレーショナル・データまたはXML要素のどちらかに正確に変換します。TopLinkを使用すると、効率的で柔軟で実績のあるソリューションを利用することで、中心的な領域の問題に焦点を置きつつ、アプリケーションで永続性とオブジェクト変換を統合できます。TopLinkが提供する拡張的な開発ツール・セット(Oracle TopLink Workbenchなど)を使用して、柔軟で効率的なメタデータ形式で、オブジェクトからデータへのソース、およびオブジェクトからデータへの表示マッピングを迅速に獲得および定義することができます。TopLinkランタイムを利用することで、アプリケーションでは、データ・アクセス、問合せ、トランザクションおよびキャッシングに対する詳細なサポートを提供するシンプルなセッション・ファサードとともに、このマッピング・メタデータを活用できます。

TopLinkの主な特徴を次に示します。

  • 非侵入的で柔軟なメタデータベース・アーキテクチャ

  • 包括的なビジュアルTopLink Workbench

  • 高度なマッピング・サポートと柔軟性(リレーショナル、オブジェクト・リレーショナル、EISおよびXML)

  • オブジェクト・キャッシング・サポート

  • 問合せの柔軟性

  • ジャストインタイムの読取り

  • キャッシング

  • オブジェクトレベルのトランザクション・サポートおよび統合

  • ロック

  • 複数のパフォーマンス・チューニング・オプション

  • アーキテクチャの柔軟性

TopLinkの詳細は、Oracle Technology NetworkのTopLinkページ(http://www.oracle.com/technology/products/ias/toplink/index.html)を参照してください。


注意:

現在、TopLink永続性マネージャはOC4Jのデフォルトの永続性マネージャです。これはEJB 2.1およびEJB 3.0の永続性APIをサポートしています。

TopLink永続性マネージャとともにOC4Jを使用する利点を次に示します。

  • データベース表への同時アクセスが可能で、データベース・リソース競合も回避されます(「データベース・リソース競合の回避」を参照)。

  • TopLinkの問合せおよび式のフレームワークを使用して、EJB 3.0の問合せやEJB 2.1のfinderまたはselectメソッドに対する選択基準を表すことができます。

  • 定義済でデフォルトのfinderおよびselectメソッドを利用できます。

  • TopLink永続性マネージャは、指定した問合せ構文(「問合せ構文の理解」を参照)を取得して、基底となるリレーショナル・データベースに対するネイティブSQLを生成します。

TopLink永続性マネージャへの移行

TopLink移行ツールを使用すると、Orion永続性マネージャとともにEJB 2.0エンティティBeanを使用する既存のOC4Jアプリケーションを、TopLink永続性マネージャとともにEJB 2.0エンティティBeanを使用するように簡単に移行できます。

TopLinkをデフォルトの永続性マネージャとして使用するようにOC4Jを構成できます。10gリリース3(10.1.3.1)では、OC4Jは出荷時にTopLinkをデフォルトの永続性マネージャとして使用するように構成されています。


注意:

JARファイルのすべてのCMP EJBに対して使用できる永続性マネージャは1つのみです。

TopLinkには、TopLinkを永続性マネージャとして使用するように既存のJ2EEアプリケーションを移行するための自動化サポートが用意されています。10.1.3リリースでは、リリース2(9.0.4)以上のOC4Jインストールに対するこの移行を自動化するために使用できる、TopLink移行ツールが提供されます。OC4Jをこの新規リリースにアップグレードした場合、元のorion-ejb-jar.xmlファイルから永続性構成をtoplink-ejb-jar.xmlファイルに移行する必要があります。

TopLink移行ツールを使用した後、「移行後の変更」に説明のある追加的な変更が必要になる場合があります。

移行中に問題が発生した場合は、「移行に関するトラブルシューティング」を参照してください。

この項では、次のトピックでTopLink移行ツールの使用方法を説明します。

TopLink移行ツールの主な特徴

TopLink移行ツールを使用する前に、TopLink移行ツールがどのように機能するかを理解し、どのOC4J永続性マネージャ・メタデータが移行されるか、または移行されないのかを判断するために、この項を確認してください。

入力と出力

TopLink移行ツールは次のファイルを入力として取り入れます。

  • ejb-jar.xml

  • orion-ejb-jar.xml

ツールはOC4J固有の永続性構成をできるかぎり新しいtoplink-ejb-jar.xmlファイルに移行して、ユーザーが指定したターゲット・ディレクトリに次の新規ファイルを作成します。

  • orion-ejb-jar.xml

  • toplink-ejb-jar.xml

  • TopLink Workbenchプロジェクト・ファイルのTLCmpProject.mwp

ejb-jar.xmlおよびorion-ejb-jar.xmlファイルはEARファイル、JARファイル、またはスタンドアロンのXMLファイル内にある場合があります。(EARファイルやJARファイルではなく)スタンドアロンのXMLファイルから移行する場合は必ず、ドメイン・クラスがアクセス可能で、クラスパス内に含まれるようにしてください。

TopLink移行ツールは元のファイルを読み取ったときの同じ書式で、ユーザーが指定したターゲット・ディレクトリに新規のorion-ejb-jar.xmlおよびtoplink-ejb-jar.xmlファイルを作成します。たとえば、EARファイルを入力として指定した場合、TopLink移行ツールは、新規のorion-ejb-jar.xmlおよびtoplink-ejb-jar.xmlファイルの両方を含むが他の点は元のファイルと同じ新規EARファイルをステージングして作成します。

TopLink Workbenchプロジェクト・ファイルは常に別のファイルとして作成されます。


注意:

TopLink移行ツールを使用する前にorion-ejb-jar.xmlファイルのバックアップ・コピーを作成することをお薦めします。

移行

操作の際、TopLink移行ツールはすべてのエラーと診断出力を出力ディレクトリのoc4j_migration.logというログ・ファイルに記録します。

TopLink移行ツールは入力ファイルのディスクリプタ、マッピング、および問合せ情報を次のように処理します。

  • 各エンティティBeanに対するTopLinkディスクリプタ・オブジェクトを構築し、マップされた表、主キー、コンテナ管理の永続および関連フィールドなどのネイティブ永続メタデータを移行します。

  • エンティティBeanのあらゆるコンテナ管理の永続および関連フィールドに対するTopLinkマッピング・オブジェクトを構築し、外部キー参照などのネイティブ永続メタデータを移行します。

  • エンティティBeanの各ejbFindまたはejbSelectに対するTopLink問合せオブジェクトを構築し、カスタマイズされた問合せ文などの永続メタデータを移行します。

表3-1orion-ejb-jar.xmlファイルのOC4J <entity-deployment>の属性および下位要素の一覧と、それぞれについて移行ツールが次の処理を実行するかどうかを示します。

  • 新規のorion-ejb-jar.xmlファイルに保存

  • 新規のtoplink-ejb-jar.xmlファイルに移行

表3-1では、要素は山カッコで表示されています。詳細は表A-1「<entity-deployment>要素の属性」を参照してください。

表3-1 OC4J orion-ejb-jar.xmlの機能移行

orion-ejb-jar.xmlの機能 新規orion-ejb-jar.xmlに保存 新規toplink-ejb-jar.xmlに移行

<entity-deployment>

サポートされていません


サポートされていません


    clustering-schema

サポートされています


サポートされていません


    copy-by-value

サポートされています


サポートされていません


    data-source

サポートされています


サポートされていません


    location

サポートされています


サポートされていません


    max-instances

サポートされています


サポートされていません


    min-instances

サポートされています


サポートされていません


    max-tx-retries

サポートされています


サポートされていません


    disable-wrapper-cache

サポートされています


サポートされていません


    name

サポートされています


サポートされていません


    pool-cache-timeout

サポートされています


サポートされていません


    wrapper

サポートされています


サポートされていません


    local-wrapper

サポートされています


サポートされていません


    call-timeout

サポートされていません


サポートされています


    exclusive-write-access



        true

サポートされていません


サポートされています


        false

サポートされていません


サポートされていません


    do-select-before-insert



        true

サポートされていません


サポートされていません


        false

サポートされていません


サポートされていません


    isolation

サポートされていません


サポートされています


    locking-mode



        pessimistic

サポートされていません


サポートされています


        optimistic

サポートされていません


サポートされていません


        read-only

サポートされていません


サポートされています


        old_pessimistic

サポートされていません


サポートされていません


    update-changed-fields-only



        true

サポートされていません


サポートされています


        false

サポートされていません


サポートされていません


    table

サポートされていません


サポートされています


    force-update



        true

サポートされていません


サポートされていません


        false

サポートされていません


サポートされています


    data-synchronization-option



        ejbCreate

サポートされていません


サポートされていません


        ejbPostCreate

サポートされていません


サポートされていません


    batch-size



        1より大きい任意の値

サポートされていません


サポートされていません


<ior-security-config>

サポートされています


サポートされていません


<env-entry-mapping>

サポートされています


サポートされていません


<resource-ref-mapping>

サポートされています


サポートされていません


<resource-env-ref-mapping>

サポートされています


サポートされていません


<primkey-mapping>

サポートされていません


サポートされています


<cmp-field-mapping>

サポートされていません


サポートされています


    one-to-one-join



        inner

サポートされていません


サポートされています


        outer脚注 1 

サポートされていません


サポートされていません


    shared

サポートされていません


サポートされています


<finder-method>

サポートされていません


サポートされています


<persistence-type>脚注 2 

サポートされていません


サポートされています



脚注 1 TopLinkは実行時にouterおよびinner両方の結合をサポートします。これらのオプションでEJBディスクリプタを手動で構成できます。

脚注 2 persistence-type属性の表の列サイズは、もし存在する場合は破棄されます。詳細は「persistence-typeの表の列サイズのリカバリ」を参照してください。

表3-2にOC4Jの機能と、TopLink移行ツールで構成されたTopLinkの対応する機能を一覧表示します。

表3-2 OC4JとTopLinkの機能比較

機能 orion-ejb-jar.xml toplink-ejb-jar.xml

CMPフィールド・マッピング

直接

シリアライズ・オブジェクト

フィールドに直接

シリアライズ・オブジェクト

CMRフィールド・マッピング

1対1

1対多

多対多

1対1

1対多

多対多

部分問合せ

完全なSQL文

SQLコール

ファインダ

Oracle固有構文

SQLコールまたはEJB-QL

遅延ロード(フェッチ・グループ)

主キーの遅延ロードとCMPフィールド

サポートされていません。

かわりにTopLink対応機能を適宜、手動で構成できます。

SQL文キャッシュ

静的SQLのキャッシュ

Beanレベルではサポートされていません。

TopLinkはセッションおよび問合せレベルにおけるパラメータ使用のSQLおよびSQL文のキャッシュをサポートします。

ロック

optimistic: データベース・レベル

pessimistic: Beanインスタンス・レベル

optimistic: オブジェクト・レベル

pessimistic: データベース・レベルの問合せロック

読取り専用

変更を試行するとExceptionをスロー

変更を試行するとExceptionをスロー

有効性のタイムアウト

読取り専用Beanのリロードされる前の有効性タイムアウト

キャッシュ・タイムアウト

分離レベル

コミット済

シリアライズ可能

コミット済

シリアライズ可能

コミットされない

繰返し可能ではない

コミットまでの更新遅延

サポート対象

サポート対象

Beanの排他的書込みアクセス

デフォルト値はfalse

trueが前提

存在チェックなしの挿入

サポート対象

サポート対象

変更されたフィールドのみ更新

サポート対象

サポート対象

強制更新

永続フィールドが変更されていない場合でも、Beanライフ・サイクルのejbStoreメソッドを起動

サポート対象


コマンドラインからのTopLink移行ツールの使用

コマンドラインからTopLink移行ツールを使用するには、次の手順を実行します。

  1. 次のパスがクラスパス内にあることを確認します。

    • <TOPLINK_HOME>/jlib/antlr.jar

    • <TOPLINK_HOME>/jlib/ejb.jar


      注意:

      特定のインストールでは、ejb.jarファイルが<ORACLE_HOME>/j2ee/home/lib/ディレクトリにある場合もあります。

    • <TOPLINK_HOME>/jlib/toplink.jar

    • <TOPLINK_HOME>/jlib/cmpmigrator.jar

    • <TOPLINK_HOME>/jlib/toplinkmw.jar

    • <TOPLINK_HOME>/jlib/tlmwcore.jar

    • <TOPLINK_HOME>/config

    • <ORACLE_HOME>/lib/xmlparserv2.jar

  2. (EARファイルやJARファイルではなく)プレーンXMLファイルから移行する場合は必ず、ドメイン・クラスがアクセス可能で、クラスパス内に含まれるようにしてください。

  3. 元のXMLファイルのバックアップ・コピーを作成します。

  4. 表3-3に一覧のある適切な引数を使用して、例3-1のようにTopLink移行ツールを実行します。

    TopLink移行ツールの使用情報は次のとおりです。

    java -Dtoplink.ejbjar.schemavalidation=<true|false>
     -Dtoplink.migrationtool.generateWorkbenchProject=<true|false>
     -Dhttp.proxyHost=<proxyHost>
     -Dhttp.proxyPort=<proxyPort>
     oracle.toplink.tools.migration.TopLinkCMPMigrator -s<nativePM>
     -i<inputDir> -a<ear>|<jar> -x -o<outputDir> -v
    
    

    入力ファイルを特定するには、-aまたは-xのいずれかを指定します。

    トラブルシューティング情報は、「移行に関するトラブルシューティング」を参照してください。

例3-1 コマンドラインからのTopLink移行ツールの使用

java -Dhttp.proxyHost=www-proxy.us.oracle.com -Dhttp.proxyPort=80 
oracle.toplink.tools.migration.TopLinkCMPMigrator -sOc4j-native -iC:/mywork/in -aEmployee.ear -oC:/mywork/out -v

表3-3 TopLink移行ツール引数

引数 説明

toplink.ejbjar.schemavalidation

ejb-jar.xmlがDTDではなくXMLスキーマ(XSD)を使用する場合に、スキーマ検証の開始に使用されるシステム・プロパティ。

デフォルト値はfalseです。

toplink.migrationtool.generateWorkbenchProject

TopLink Workbenchプロジェクトの生成の有効化に使用されるシステム・プロパティ。

デフォルト値はtrueです。

<proxyHost>

ローカルHTTPプロキシ・ホストのアドレス。

<proxyHost>

ローカルHTTPプロキシ・ホストがHTTPリクエストを受信するポート番号。

-s <source>

移行する対象のネイティブ永続性マネージャの名前。

OC4Jの場合は、oc4j-nativeという名前を使用します。

-i <input-directory>

移行するOC4Jのejb-jar.xmlおよびorion-ejb-jar.xmlファイル両方を含む入力ディレクトリへの完全修飾パス。

現在の作業ディレクトリがデフォルトです。

-a <EAR-or-JAR>

移行するOC4Jのejb-jar.xmlおよびorion-ejb-jar.xmlファイル両方を含むアーカイブ・ファイル(EARまたはJARのどちらか)への完全修飾パス。

-x

移行元の入力ディレクトリのOC4JファイルがプレーンXMLファイル(アーカイブ・ファイル内ではない)であることを、TopLink移行ツールに伝えます。

このオプションを使用する場合は必ず、ドメイン・クラスがアクセス可能で、クラスパス内に含まれるようにしてください。

-o <output-directory

<targetDir>は、TopLink移行ツールが新規のorion-ejb-jar.xmltoplink-ejb-jar.xmlおよびログ・ファイルを書き込むディレクトリへのパスです。このパスは現在の作業ディレクトリへの絶対パスまたは相対パスになります。この引数の値を指定する必要があります。

このディレクトリに設定されている権限で、TopLink移行ツールによるファイルおよびサブディレクトリの作成が許可されていることを確認してください。

-v

詳細モード。エラーおよび診断情報をコンソールに記録するようにTopLink移行ツールに伝えます。


移行後の変更

orion-ejb-jar.xmlファイルの永続性構成をtoplink-ejb-jar.xmlファイルに移行したら、次のような移行後の変更を検討してください。

persistence-typeの表の列サイズのリカバリ

orion-ejb-jar.xmlファイルで、例3-2に示すタイプおよび列サイズの両方を提供するpersistence-type属性を使用して、このcmp-field-mappingマッピングを指定できます。

例3-2 列サイズを指定するpersistence-typeを使用したcmp-field-mapping

<cmp-field-mapping ejb-reference-home="MyOtherEntity" name="myField"
                   persistence-name="myField" persistence-type="VARCHAR2(30)">

TopLink移行ツールは永続性タイプは移行しますが、列サイズは移行しません。これは、TopLinkプロジェクトに通常、このサイズ情報が含まれないためです。

persistence-type列サイズをリカバリするには、次の手順を実行します。

  1. 「コマンドラインからのTopLink移行ツールの使用」の説明どおりに移行を実行します。

  2. 生成されたTopLink Workbenchプロジェクト・ファイルのTLCmpProject.mwpを起動します。

  3. データベースにログインします。

不明な主キー・クラスのマッピング順序表の更新

TopLinkは不明な主キー・クラスの使用をサポートしています。このため、TopLink移行ツールでもこの機能はサポートされています。

OC4Jはネイティブ・ランタイム・キー・ジェネレータを使用して、auto-idキー・フィールドの一意キーを生成します。一方、TopLinkは順序表を使用します。

OC4Jの永続性構成に不明な主キー・クラスの使用が含まれる場合は、TopLink移行ツールによりこの目的のための順序表が作成されます。

移行後にアプリケーションをデプロイする前に、次の手順を実行します。

  1. 移行前に生成された最も大きいキー値を割り出します。

  2. TopLink移行ツールが生成した順序表のカウンタを、移行前に生成された最も大きいキー値よりも大きい数字に手動で更新します。

プロジェクトのカスタマイズ

プロジェクトの次のコンポーネントはカスタマイズが可能です。

永続性マネージャ・プロパティ: アプリケーションを移行した後、orion-ejb-jar.xmlファイルの永続性マネージャ・プロパティをカスタマイズする場合があります。これらのプロパティは、TopLinkランタイムがCMPプロジェクト用に内部で使用するTopLinkセッションの構成に使用されます。

セッション・イベント・リスナー: デプロイ時にデフォルト設定をプロジェクトに適用した後、セッション・イベント・リスナーを構成してTopLinkセッションをカスタマイズする場合があります。セッションが呼び出すログイン前イベントは特に有用です。これによって、セッションが初期化され接続が確立する直前に、セッションに対するカスタム(非デフォルト)仕様を定義できます。

移行に関するトラブルシューティング

この項では、次のような移行時の問題に対するソリューションを説明します。

ログ・メッセージ

操作の際、TopLink移行ツールはすべてのエラーと診断出力を出力ディレクトリのoc4j_migration.logというログ・ファイルに記録します。

これらの警告以外に、TopLink移行ツールは移行の完了を妨げる問題が発生した場合にエラーを記録します。表3-4にこれらの問題と可能なソリューションを一覧表示します。

表3-4 TopLink移行ツールのエラー・メッセージ

エラー・メッセージ 説明

入力ファイルにejb-jar.xmlがありません。移行プロセスを実行するにはejb-jar.xmlを提供する必要があります。

ejb-jar.xmlファイルが見つかりません。TopLink移行ツールは停止し、元の入力ファイルをターゲット・ディレクトリにコピーします。

ejb-jar.xmlファイルが指定したEARやJAR内、またはプレーンXMLファイルに存在することを確認します。ターゲット・ディレクトリを空にして、TopLink移行ツールを再度実行します。

ネイティブ永続メタデータが定義されたorion-ejb-jar.xmlがなく、移行が必要ありません。

orion-ejb-jar.xmlファイルが見つかりません。TopLink移行ツールは停止し、元の入力ファイルをターゲット・ディレクトリにコピーします。

orion-ejb-jar.xmlファイルが指定したEARやJAR内、またはプレーンXMLファイルとして存在することを確認します。ターゲット・ディレクトリを空にして、TopLink移行ツールを再度実行します。

toplink-ejb-jar.xmlがアーカイブですでに定義済で、移行が必要ありません。

toplink-ejb-jar.xmlファイルがターゲット・ディレクトリにすでに存在します。TopLink移行ツールは停止し、元の入力ファイルをターゲット・ディレクトリにコピーします。

ターゲット・ディレクトリからtoplink-ejb-jar.xmlファイルを削除します。ターゲット・ディレクトリを空にして、TopLink移行ツールを再度実行します。


予期しない関連多重度

TopLink移行ツールはOC4J ejb-jar.xmlファイルからではなく、orion-ejb-jar.xmlファイルから関連多重度を取得します。

このため、OC4J ejb-jar.xmlファイルが関連を1対多に定義している場合でも、orion-ejb-jar.xmlファイルが同じ関連を多対多に定義していると、TopLink移行ツールは関連を多対多として移行します。