BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

アダプタの開発

 前 次 目次 索引 PDF で表示  

DBMS サンプル アダプタを使用したアダプタ開発方法の学習

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

 


DBMS サンプル アダプタの概要

DBMS サンプル アダプタは JSP ベースの GUI を含む J2EE 準拠のアダプタです。これは、WebLogic Integration ADK を使用してアダプタがどのように構築されるかを示す具体例を提供します。リレーショナル データベースは、アダプタのプロバイダが個々の EIS について学習する時間を省き、アダプタと ADK に集中できるよう、アダプタの EIS として使用されます。

DBMS サンプル アダプタは、独自のアダプタを設計、開発するために必要なタスクの理解をサポートすることを目的としています。プロダクション環境での使用向けではなく、そのような環境ではサポートされていません。アダプタは、プロダクション向けに準備の整ったアダプタとしてではなく、例として機能するものであるため、すべての機能が含まれているわけではなく、以下のような制限があります。このアダプタは、複雑なクエリやストアド プロシージャの実行はできません。

DBMS サンプル アダプタは、開発者やビジネス アナリストが ADK を使用してアダプタを構築する場合のさまざまな可能性について理解できるようサポートします。ビジネス アナリストの方は、DBMS サンプル アダプタの仕組みで説明するように、インタフェースの操作を通じてアプリケーション ビューサービスおよびイベントについて理解できます。

アダプタ開発者は、J2EE 準拠のアダプタを構築するための ADK クラスの拡張および使用方法の学習から始めることをお勧めします。手順は、以下を参照してください。

DBMS サンプル アダプタは以下の要件を満たしています。

 


DBMS サンプル アダプタの仕組み

この節では、DBMS サンプル アダプタの仕組みについて説明します。ビジネス アナリストの方はインタフェースの操作を通じてアダプタの仕組みを理解できます。この節の例ではベースとなるデータベースに顧客を挿入といったサービスを作成する方法について説明します。次に、イベントがどのように生成されてアクションの実行が通知されるのかを示します。

この節の内容は以下のとおりです。

始める前に

DBMS サンプル アダプタにアクセスする前に、以下のタスクを完了してください。

DBMS サンプル アダプタへのアクセス

DBMS サンプル アダプタにアクセスする手順は次のとおりです。

  1. 新しいブラウザ ウィンドウを開きます。

  2. 該当するシステムの Application View Management Console の URL を入力します。
    http://HOSTNAME:7001/wlai

    図E-1 に示すように、[Application View Console - Logon] 画面が表示されます。

DBMS サンプル アダプタ ツアー

ここでは DBMS サンプル アダプタの操作方法について簡単に説明します。まず、ブラウザで DBMS サンプル アダプタの [Application View Console - Logon] ページを開きます。手順については、DBMS サンプル アダプタへのアクセスを参照してください。

図 E-1 [Application View Console - Logon]


 


 

  1. Application View Management Console にログオンするには、WebLogic Server のユーザ名とパスワードを入力し、[Login] をクリックします。[Application View Management Console] が表示されます。

    図 E-2 [Application View Management Console]


     

  2. [Add Application View] をクリックします。[Define New Application View] 画面が表示されます。アプリケーション ビューを作成する場合、アプリケーション ビューと DBMS サンプル アダプタを関連付けるための説明を指定します。

    アプリケーション ビューおよびその定義に関する詳細については、『Application Integration ユーザーズ ガイド』の「アプリケーション ビューの定義」を参照してください。

    図 E-3 [Define New Application View] ページ


     

  3. アプリケーション ビューを定義する手順は次のとおりです。

    1. [Application View Name] フィールドに AppViewTest と入力します。

      入力する名前は、このアプリケーションが実行する一連の機能を表すものにする必要があります。また、アダプタに対してユニークなアプリケーション ビュー名にする必要があります。ピリオド(.)、ハッシュ マーク(#)、バックスラッシュ(¥)、プラス記号(+)、アンパサンド(&)、カンマ(,)、アポストロフィ(’)、二重引用符(”)およびスペースは無効です。

    2. [Description] フィールドにアプリケーション ビューの簡単な説明を入力します。

    3. [Associated Adapters] リストからこのアプリケーション ビューを作成する際に使用する DBMS サンプル アダプタを選択します。

    4. [OK] をクリックします。[Select Existing Connection] 画面が表示されます。

      図 E-4 [Select Existing Connection] ページ


       

    [Select Existing Connection] ページでは、アプリケーション ビューに関連付ける接続ファクトリのタイプを選択できます。

    [Connection Factory Selection] ページから、[Select Connection] または [Connection Configuration] ページをいつでも表示できます。アプリケーション ビューをデプロイする前であれば、新しい接続ファクトリと既存の接続ファクトリを切り替えることができます。

  4. [Continue] をクリックします。新しい接続ファクトリの作成を選択した場合、[Configure Connection Parameters] ページが表示されます。既存の接続ファクトリの使用を選択した場合、[Application View Administration] ページが表示されます。([Application View Administration] ページの詳細については、手順 5. を参照してください。)

    図 E-6 [Configure Connection Parameters] ページ


     

  5. [Configure Connection Parameter] 画面では、アプリケーション ビューと対象の EIS との対話を可能にするネットワーク関連情報を入力します。これを入力する必要があるのは、各アプリケーション ビューで 1 度だけです。

    1. WebLogic Server の ユーザ名とパスワードを入力します。

    2. [Data Source Name (JNDI)] フィールドに WLAI_DataSource と入力します。

    3. [Continue] をクリックします。[Application View Administration] ページが表示されます。

      [Application View Administration] ページに、接続条件の概要が示されます。イベントおよびサービスを定義したときに、スキーマを表示してこのページからイベントやサービスを概略化したり削除したりできます。

    アプリケーション ビューの作成が完了した際、サービスをアプリケーション ビューに追加できます。

    図 E-7 [Application View Administration for AppViewTest] ページ


     

  6. 新しいアプリケーション ビューにサービスを追加するには、サービスの名前、説明および SQL 文を設定する必要があります。

    参照リンクを使用して DBMS サンプル アダプタ データベース スキーマとテーブルを参照し、データベース テーブル CUSTOMER_TABLE を指定します。

    サービスを追加する手順は次のとおりです。

    1. [Application View Administration] ページで [Service] グループ内の [Add] をクリックします。[Add Service] ページが表示されます。

      図 E-8 [Add Service] ページ


       

    2. [Unique Service Name] フィールドに InsertCustomer と入力します。

    3. [Description] フィールドに、サービスの説明を入力します。

    4. [Browse DBMS] をクリックして、データベースのテーブルおよびカラム構成を表示します。複雑なクエリを記述する場合、[Browse] ウィンドウを開いたままで、後でテーブルやカラム名を切り取ってクエリに貼り付けることができます。

      図 E-9 [Browse DBMS] ページ


       

    5. [DBMS Schemas for Catalog] ページで、[APP] をクリックします。

      図 E-10 [Browse DBMS Table Types] ページ


       

    6. [DBMS Table Types] ページで [TABLE] をクリックします。

      図 E-11 [DBMS Browse Tables] ページ


       

    7. [Tables For: .APP] ページで [CUSTOMER_TABLE] をクリックします。[Browse] ウィンドウにカラムの名前とタイプが表示されます。

      図 E-12 [Browse DBMS for Table] ページ


       

    8. [Close Window] をクリックしてウィンドウを閉じ、[Add Service] ページに戻ります。

      このウィンドウはアダプタで使用できる機能を紹介するためにツアーの中に組み込まれています。この演習ではテキストを選択する必要はありません。

    9. [Service] ページで以下の情報を [SQL Statement] フィールドに入力します。

      Insert into APP.CUSTOMER_TABLE (FIRSTNAME, LASTNAME, DOB) VALUES ([FIRSTNAME VARCHAR], [LASTNAME VARCHAR], [DOB DATE])

    10. [Add] をクリックします。[Application View Administration] ページが表示されます。

      サービスの追加に関する詳細については、『Application Integration ユーザーズ ガイド』の「アプリケーション ビューの定義」を参照してください。

  7. 該当するアプリケーション ビューにイベントを追加します。追加するには、イベントにユニークな名前と説明を指定する必要があります。次に、イベントのトリガを追加するデータベース テーブルを指定します。また、追加するイベントが挿入、更新、削除のどれであるかも指定する必要があります。

    [Browse DBMS] リンクを使用して、DBMS データベース スキーマとテーブルを参照し、データベース テーブルを指定します。これにより、選択したテーブル名をフィールドに自動的に入力できます。

    イベントを追加する手順は次のとおりです。

    1. [Application View Administration] ページで [Event] グループ内の [Add] をクリックします。[Add Event] ページが表示されます。

      図 E-13 [] ページ


       

    2. [Unique Event Name] フィールドに CustomerInserted と入力します。

    3. [Description] フィールドにイベントの説明を入力します。

    4. [Browse DBMS] リンクをクリックして、データベースのテーブルおよびカラム構成を表示します。

      図 E-14 [Browse DBMS Tables] ページ


       

    5. [CUSTOMER TABLE] オプションを選択します。[Fill] をクリックすると選択したテーブル名が自動的に入力されます。

      図 E-15 [Add Event] ページ


       

    6. [Insert Event] オプションを選択します。

    7. [Add] をクリックします。[Application View Administration] ページが表示されます。

      図 E-16 [Application View Administration for AppViewTest] ページ


       

  8. アプリケーション ビューをデプロイするための準備を行います。[Application View Administration] ページには 1 つの格納場所が表示されます。ここで、アプリケーション ビューを保存またはデプロイする前にコンテンツを確認できます。このページで、次のことを行うことができます。

    アプリケーション ビューのパラメータを確認し、[Continue] をクリックします。[Deploy Application View to Server] ページが表示されます。

  9. アプリケーション ビューをデプロイします。デプロイするには、enable asynchronous service invocation、イベント ルータ URL および接続プールパラメータを含むいくつかのパラメータを定義する必要があります。

    図 E-17 [Display Application View to Server] ページ


     

    アプリケーション ビューをデプロイする手順は次のとおりです。

    1. [Enable Asynchronous Service Invocation] チェック ボックスを必ず選択します。

    2. [Event Router URL] フィールドに次のように URL を入力します。
      http://localhost:7001/DbmsEventRouter/EventRouter

    3. [Connection Pool Parameters] では、デフォルト値をそのまま使用します。

      [Minimum Pool Size] − 1

      [Maximum Pool Size] − 10

      [Target Fraction of Maximum Pool Size] − 0.7

      [Allow Pool to Shrink](選択)

    4. [Log Configuration] フィールドで [Log warnings, errors, and audit messages] を選択します。

    5. [Deploy persistently?] を必ずチェックします。

    6. [Restrict Access] リンクをクリックします。[Application View Security] 画面が表示されます。

  10. アプリケーション ビューのパーミッションを設定します。あらゆるユーザまたはグループに対して、読み込みおよび書き込みアクセスを許可または無効にできます。

    図 E-18 [Application View Security] ページ


     

    アプリケーション ビューのパーミッションを設定する手順は次のとおりです。

    1. [Choose an Action] で [Revoke] オプションを選択します。

    2. [Specify a User or Group] に Jdoe と入力します。

    3. [Permission] で [Write (Deploy/Undeploy/Edit App View)] オプションを選択します。

    4. [Done] をクリックします。[Deploy Application View] 画面が表示されます。

    5. [Deploy] をクリックします。

  11. アプリケーション ビューのデプロイが完了すると、デプロイされたアプリケーション ビューに関するすべての情報が [Summary for Application View] ページに表示されます。このページではスキーマ、イベント概要、サービス概要の表示、サービスとイベントのテスト、およびアプリケーション ビューのアンデプロイを実行できます。

    図 E-19 [Summary for Application View] ページ


     

  12. イベントをテストします。アプリケーション ビューが正常に機能するかを確認するため、アプリケーション ビューのイベントおよびサービスをテストできます。イベントをテストするには、サービスを呼び出すか、手動でイベントを作成します。また、アプリケーションがイベントを受け取るまでの待機時間を指定することもできます。

    1. [Event] グループの [CustomerInserted] ライン上で [Test] をクリックします。[Test Event] 画面が表示されます。

      図 E-20 [Test Event] ページ


       

    2. [Test Event] ページで [Service] オプションを選択し、次にサービス メニューから [InsertCustomer] を選択します。

    3. [How long should we wait to receive the event?] フィールドに 6000 と入力します。

    4. [Test] をクリックします。[Test Service] 画面が表示されます。

      図 E-21 [Test Service] ページ


       

    5. [FIRSTNAME] フィールドに、名前を入力します。

    6. [LASTNAME] フィールドに、苗字を入力します。

    7. [DOB] フィールドに、生年月日を入力します。[DOB] フィールドの右側に表示されるフォーマットに従ってください。

    8. [Test] をクリックします。[Test Result] ページが表示されます。このページに、生成したイベント、およびアプリケーション サーバによって生成された応答を表す XML ドキュメントのコンテンツが表示されます。

      図 E-22 [Test Result] ページ


       

 


DBMS サンプル アダプタの開発工程

この節では DBMS サンプル アダプタを開発する際に使用するインタフェースについて説明します。ADK では Java コネクタ アーキテクチャに準拠したアダプタに必要な実装の多くがありますが、EIS およびその環境を定義するまで完全に実装されないインタフェースもあります。このため、ADK で提供される抽象クラスの具象実装として、DBMS サンプル アダプタが作成されました。

DBMS サンプル アダプタの作成手順は以下のとおりです。

手順 1 : DBMS サンプル アダプタについて

ADK で提供される実装が DBMS サンプル アダプタでどのように使用されるかについては、Javadoc およびこの節で後述するメソッドのコードを参照してください。

注意: WLI_HOME は、WebLogic Integration がインストールされているドライブまたはディレクトリです。

手順 2 : 環境の定義

アダプタの開発者は、コーディングを開始する前に、アダプタ設定ワークシート(アダプタ設定ワークシートを参照)を使用して、開発対象のアダプタに関する重要情報を確認および収集できます。DBMS サンプル アダプタの場合、ワークシートの質問に対する答えは以下のようになります。

注意: 先頭にアスタリスク(*)が付いた質問は、Generate Adapter Template ユーティリティを使用する必要があります。

  1. * アダプタの開発に使用する EIS の名前は何ですか?

    PointBase、SQLServer、Oracle、または Sybase データベース。

  2. * 使用する EIS のバージョンは何ですか?

    PointBase 4.0、MSSQLServer 7.0、Oracle 8.1.6 または Sybase 11.9.2。

  3. * 使用する EIS のタイプ(DBMS または ERPなど)は何ですか?

    DBMS です。

  4. * アダプタのベンダ名は何ですか?

    BEA です。

  5. * アダプタのバージョン番号は何ですか?

    ありません(サンプル用)。

  6. * アダプタの論理名は何ですか?

    BEA_WLS_DBMS_ADK です。

  7. アダプタで EIS 内部の機能を呼び出す必要がありますか?

    はい。

    その必要がある場合、アダプタはサービスをサポートします。

    はい。

  8. 外部プログラムから EIS の機能を呼び出せるようにするために、EIS ではどのようなメカニズムまたは API を提供していますか?

    JDBC

  9. このメカニズムで EIS に対するセッションまたは接続を設定するのにどのような情報が必要ですか?

    データベース URL、ドライバ クラス、ユーザ名、パスワードが必要です。

  10. 特定のサービスについて EIS で呼び出す機能を特定するときに、どのような情報が必要ですか?

    機能名、executeUpdate、executeQuery が必要です。

  11. EIS では特定の機能に対する入出力の要件のために、EIS をクエリすることができますか?

    はい。データ構造を参照できます。

    可能な場合、サービスの入力要件を特定するのにどのような情報が必要になりますか?

    SQL です。

  12. 入力要件のうち、どの要件にも出てくる静的な情報は何ですか?アダプタでは、このような静的な情報を InteractionSpec オブジェクトにエンコーディングする必要にあります。

    SQL です。

  13. 入力要件のうち、各要件に対する動的な情報は何ですか?お使いのアダプタはサービスに必要な入力パラメータを示す XML スキーマを要求ごとに指定する必要があります。

    サービスの SQL 式により、入力要件は異なります。

  14. サービスの出力要件を特定するのに必要な情報は何ですか?

    なし

  15. EIS ではアダプタから呼び出せる機能のカタログを参照するメカニズムがありますか?その場合、アダプタでサービスをサポートします。

    はい。

  16. EIS の内部で起きる変更に対する通知を受け取る必要がありますか?その必要がある場合、アダプタはイベントをサポートします。

    はい。

  17. 外部プログラムから EIS のイベント通知を受け取るために、EIS ではどのようなメカニズムまたは API が提供されていますか?この質問の回答によって、プル型とプッシュ型のいずれのメカニズムを開発すべきかを決めることができます。

    なし。DBMS サンプル アダプタは、プル メカニズムを使用して、WebLogic Integration イベント ジェネレータ 上に構築されています。

  18. EIS では、お使いのアダプタがサポートできるイベントを特定できますか?

    はい。

  19. EIS では特定のイベントに対するメタデータをクエリできますか?

    はい。

  20. お使いのアダプタでサポート可能な(言語および国によって定義される)ロケールは何ですか?

    複数のロケールのサポートが必要です。

手順 3 : Server Provider Interface パッケージの実装

DBMS サンプル アダプタの Server Provider Interface (SPI) を実装し、J2EE 準拠の SPI 要件を満たすため、ADK のクラスが拡張され、以下の具象クラスが作成されました。

表 E-1 SPI クラスの拡張

具象クラス

拡張された ADK クラス

ManagedConnectionFactoryImpl

AbstractManagedConnectionFactory

ManagedConnectionImpl

AbstractManagedConnection

ConnectionMetaDataImpl

AbstractConnectionMetaData

LocalTransactionImpl

AbstractLocalTransaction


 

これらのクラスにより、EIS への接続性が提供されるため、イベント リストや要求送信用のフレームワークの構築、およびトランザクションの境界設定を行い、該当する EIS を管理できます。

ManagedConnectionFactoryImpl

DBMS サンプル アダプタ用の SPI を実装するためにまず ManagedConnectionFactory インタフェースを実装しました。ManagedConnectionFactoryManagedConnection インスタンスの照合および作成メソッドを提供し、接続プーリングをサポートします。

基本実装

ADK で提供される com.bea.adapter.spi.AbstractManagedConnection Factory は、Java コネクタ アーキテクチャ インタフェース javax.resource.spi.ManagedConnectionFactory を実装したものです。DBMS サンプル アダプタでは com.bea.adapter.dbms.spi.ManagedConnectionFactoryImplでこのクラスが拡張されています。リストE-1ManagedConnectionFactoryImpl の派生ツリーを示しています。

コードリスト E-1 com.bea.adapter.dbms.spi.ManagedConnectionFactoryImpl

javax.resource.spi.ManagedConnectionFactory
|
|-->com.bea.adapter.spi.AbstractManagedConnectionFactory
|
|-->com.bea.adapter.dbms.spi.ManagedConnectionFactoryImpl

開発者のコメント

ManagedConnectionFactory は Java コネクタ アーキテクチャ SPI パッケージの中心クラスです。ADK の AbstractManagedConnectionFactory はSun MicroSystems のインタフェースで宣言されているメソッドに必要な実装の多くを提供しています。このADK のAbstractManagedConnectionFactory を DBMS サンプル アダプタ向けに拡張するため、キーメソッドである createConnectionFactory() および createManagedConnection() が実装されました。また、equals()hashcode()checkState() のオーバーライドも記述され、DBMS サンプル アダプタによってデータベース固有の動作もサポートされるようになりました。

スーパークラスが認識できないプライベート属性があります。アダプタを作成する際、そのような属性に対してセッター/ゲッター メソッドを指定する必要があります。抽象メソッドの createConnectionFactory() が実装されているため、入力パラメータを使用して EIS 固有の ConnectionFactory を提供できます。

また、createManagedConnection() は、クラスの主要なファクトリ メソッドです。このメソッドにより、アダプタが正しくコンフィグレーションされているかどうかが最初にチェックされます。次に、スーパークラスのメソッドが実装され、接続およびパスワード資格オブジェクトが取得されます。この処理が正常に実行されると、物理データベース接続が開始され、インスタント化の後、物理接続に割り当てられている ManagedConnectionImpl (ManagedConnection の DBMS サンプル アダプタ実装) が返されます。

その他のメソッドは、メンバー属性用のゲッター/セッター メソッドです。

ManagedConnectionImpl

ManagedConnection インスタンスは管理環境のベースになる EIS への物理接続を表します。ManagedConnection オブジェクトは、アプリケーション サーバによってプールされます。詳細については、ManagedConnectionで、ADK による AbstractManagedConnection インスタンスの実装方法に関する箇所を参照してください。

基本実装

ADK で提供される com.bea.adapter.spi.AbstractManagedConnection は、J2EE インタフェース javax.resource.spi.ManagedConnection を実装したものです。DBMS サンプル アダプタでは com.bea.adapter.dbms. spi.ManagedConnectionImpl でこのクラスが拡張されています。リストE-2ManagedConnectionImpl の派生ツリーを示しています。

コードリスト E-2 com.bea.adapter.dbms.spi.ManagedConnectionImpl

javax.resource.spi.ManagedConnection
|
|-->com.bea.adapter.spi.AbstractManagedConnection
|
|-->com.bea.adapter.dbms.spi.ManagedConnectionImpl

開発者のコメント

ManagedConnection は Java コネクタ アーキテクチャ SPI 仕様の重要箇所であるため、このクラスの詳細は Javadoc コメント内に記載されています。以下のメソッドの実装を重点的に参照してください。

ping() メソッドを使用すると、物理データベース接続(cci 以外の Connection)が有効かどうかチェックできます。例外が発生すると、ping() によって、例外のタイプが詳しくチェックされるため、接続が必要以上に切断されることはありません。

その他のメソッドは、EIS 固有のメソッド、または単にセッター/ゲッターを必要とするメソッドです。

ConnectionMetaDataImpl

ManagedConnectionMetaData インタフェースは、ManagedConnection インスタンスに関連付けられている基本となる EIS インスタンスに関する情報を提供します。アプリケーションサーバでは、この情報に基づいて、接続対象の EIS インスタンスに関する実行時情報が取得されます。詳細については ManagedConnectionで、ADK による AbstractConnectionMetaData インスタンスの実装方法に関する説明を参照してください。

基本実装

ADK で提供される com.bea.adapter.spi.AbstractConnectionMetaData は J2EE インタフェース javax.resource.spi.ManagedConnection MetaData を実装したものです。DBMS サンプル アダプタでは、com.bea. adapter.dbms.spi.ConnectionMetaDataImpl で、このクラスが拡張されています。リストE-3ConnectionMetaDataImpl の派生ツリーを示しています。

コードリスト E-3 com.bea.adapter.dbms.spi.ConnectionMetaDataImpl

javax.resource.spi.ManagedConnectionMetaData
|
|-->com.bea.adapter.spi.AbstractConnectionMetaData
|
|-->com.bea.adapter.dbms.spi.ConnectionMetaDataImpl

開発者のコメント

ADK の AbstractConnectionMetaData は以下のクラスを実装しています。

ConnectionMetaData クラスの実装には、DatabaseMetaData オブジェクトが使用されます。ADK の抽象的実装が使用されたため、このクラスに抽象メソッドを実装する場合 EIS 固有の情報を指定する必要があります。

LocalTransactionImpl

LocalTransaction インタフェースは、EIS リソース マネージャの内部で管理されているトランザクションのサポートを提供します(つまり、外部トランザクション マネージャを必要としないトランザクション)。詳細については、LocalTransactionで、ADK による AbstractLocalTransaction インスタンスの実装方法に関する説明を参照してください。

基本実装

ADK で提供される com.bea.adapter.spi.AbstractLocalTransaction は J2EE インタフェース javax.resource.spi.LocalTransaction を実装したものです。DBMS サンプル アダプタでは、com.bea.adapter.dbms. spi.LocalTransactionImpl でこのクラスが拡張されています。リストE-4 は LocalTransactionImpl の派生ツリーを示しています。

コードリスト E-4 com.bea.adapter.dbms.spi.LocalTransactionImpl

javax.resource.spi.LocalTransaction
|
|-->com.bea.adapter.spi.AbstractLocalTransaction
|
|-->com.bea.adapter.dbms.spi.LocalTransactionImpl

開発者のコメント

このクラスでは、ロギングおよびイベント通知を提供する ADK の抽象スーパクラスが使用されます。このスーパークラスは、Sun が提供する CCI と SPI LocalTransaction インタフェースの両方を実装しています。DBMS サンプル アダプタの具象クラスは、以下に示すスーパークラスの 3 つの抽象メソッドを実装しています。

手順 4 : Common Client Interface パッケージの実装

DBMS サンプル アダプタの Common Client Interface (CCI) を実装し、J2EE 準拠の CCI 要件を満たすため、ADK のクラスが拡張され、以下の具象クラスが作成されました。

表 E-2 CCI クラスの拡張

具象クラス

拡張された ADK クラス

ConnectionImpl

AbstractConnection

InteractionImpl

AbstractInteraction

InteractionSpecImpl

InteractionSpecImpl


 

これらのクラスにより、バックエンド システムにアクセスできます。クライアント インタフェースは、EIS との対話における要求および応答レコードのフォーマットを指定します。

注意: Java コネクタ アーキテクチャ 1.0 の仕様では CCI の実装は省略可能になっていますが、将来的には必須になる予定です。参考として DBMS サンプル アダプタは詳細な実装例を提供しています。

ConnectionImpl

Connection は、クライアントが基盤となる物理接続にアクセスするときに使用する、アプリケーションレベルのハンドルを表します。Connection インスタンスに割り当てられる実際の物理接続は ManagedConnection インスタンスで表されます。詳細については Connectionで ADK による AbstractConnection インスタンスの実装方法に関する説明を参照してください。

基本実装

ADK で提供される com.bea.adapter.cci.AbstractConnection は、J2EE インタフェース javax.resource.cci.Connection を実装したものです。DBMS サンプル アダプタでは com.bea.adapter.dbms.cci.ConnectionImplでこのクラスが拡張されています。リストE-5 は ConnectionImpl の派生ツリーを示しています。

コードリスト E-5 com.bea.adapter.dbms.cci.ConnectionImpl

javax.resource.cci.Connection
|
|-->com.bea.adapter.cci.AbstractConnection
|
|-->com.bea.adapter.dbms.cci.ConnectionImpl

開発者のコメント

ConnectionImpl クラスは javax.resource.cci.Connection interface の DBMS サンプル アダプタの具体的な実装です。このクラスにより ADK の AbstractConnection クラスが拡張されます。接続インスタンスに割り当てられる実際の物理接続は ManagedConnection インスタンスで表されます。

クライアントでは、ConnectionFactory インスタンス上で getConnection() メソッドを使用して接続インスタンスが取得されます。接続はゼロまたは 1 つ以上の対話インスタンスと関連付けることができます。この具象クラスが単純であるため、ADK の基本クラスの拡張が可能になります。

InteractionImpl

Interaction インスタンスにより、コンポーネントから EIS 機能を実行できます。対話インスタンスが接続に基づいて作成され、Connection インスタンスとの関係が維持されます。詳細については Interactionで、ADK による AbstractInteraction インスタンスの実装方法に関する説明を参照してください。

基本実装

ADK で提供する com.bea.adapter.cci.AbstractInteraction は J2EE インタフェース javax.resource.cci.Interaction を実装したものです。DBMS サンプル アダプタでは com.bea.adapter.dbms.cci. InteractionImpl でこのクラスが拡張されています。リストE-6 は InteractionImpl の派生ツリーを示しています。

コードリスト E-6 com.bea.adapter.dbms.cci.InteractionImpl

javax.resource.cci.Interaction
|
|-->com.bea.adapter.cci.AbstractInteraction
|
|-->com.bea.adapter.dbms.cci.InteractionImpl

開発者のコメント

InteractionImpl クラスは、ADK の対話オブジェクトの具象実装です。このメソッドは、Java コネクタ アーキテクチャおよび ADK で必要とされるメソッドを EIS 独自の方法で実装したものです。

Java コネクタ アーキテクチャの javax.resource.cci.InteractionExecute() メソッド(このクラスの中心メソッド)の 2 つのバージョンが DBMS サンプル アダプタに対し実装されました。execute() メソッドのメイン ロジックでは、次のシグネチャが使用されます。

public Record execute(InteractionSpec ispec, Record input)

このメソッドは対話からの実際の出力を返すため、他のメソッドに比べより頻繁に呼び出されます。

第 2 の実装は、便利なメソッドとして提供されます。execute() のフォームでは、次のシグネチャが使用されます。
public boolean execute(InteractionSpec ispec, Record input, Record output)
第 2 の実装のロジックでは、対話の成否のみを示すブールが返されます。

InteractionSpecImpl

InteractionSpecImpl には EIS インスタンスとの対話を実行するためのプロパティが保存されます。InteractionSpec は基本の EIS で特定の機能を実行するために使用されます。

CCI 仕様では InteractionSpec の標準プロパティが定義されていますが、そのプロパティが基本の EIS に適応しない場合、InteractionSpec を実装して標準プロパティをサポートする必要はありません。

InteractionSpec 実装クラスは、サポートされる各プロパティに対してゲッター メソッドおよびセッター メソッドを提供する必要があります。ゲッターおよびセッター メソッドで採用される規則は Java Beans 設計パターンに従う必要があります。詳細については InteractionSpecで、ADK による InteractionSpecImpl インスタンスの実装方法に関する説明を参照してください。

基本実装

ADK で提供される com.bea.adapter.cci.InteractionSpecImpl は J2EE インタフェース javax.resource.cci.InteractionSpec を実装したものです。DBMS サンプル アダプタでは com.bea.adapter.dbms. cci.InteractionSpecImpl でこのクラスが拡張されています。リストE-7 は InteractionSpecImpl の派生ツリーを示しています。

コードリスト E-7 com.bea.adapter.dbms.cci.InteractionSpecImpl

javax.resource.cci.InteractionSpec
|
|-->com.bea.adapter.cci.InteractionSpecImpl
|
|-->com.bea.adapter.dbms.cci.InteractionSpecImpl

開発者のコメント

InteractionSpec インタフェースの実装クラスには java.io.Serializable インタフェースの実装が必要です。InteractionSpec により ADK InteractionSpec が拡張され、文字列属性 m_sql に対するゲッターおよびセッター メソッドが追加されます。ゲッターおよびセッター メソッドは Java コネクタ アーキテクチャ 1.0 の仕様で指定されている Java Beans 設計パターンに従う必要があります。

手順 5 : イベント パッケージの実装

このパッケージには、DBMS サンプル アダプタの EventGeneratorWorker クラスのみが収録されています。このクラスは、DBMS サンプル アダプタのイベント ジェネレータに対して機能します。

EventGenerator

EventGenerator クラスには以下のインタフェースが実装されています。

基本実装

DBMS サンプル アダプタのイベント ジェネレータにより ADK の AbstractPullEventGenerator が拡張されます。これは、データベースがイベント ジェネレータに対して情報をプッシュできないためです。このため、通知の対象とする変更点をプルするか、実際にポーリングする必要があります。リストE-8 は EventGenerator の派生ツリーを示したものです。

コードリスト E-8 EventGenerator

com.bea.adapter.event.AbstractEventGenerator
|
|-->com.bea.adapter.event.AbstractPullEventGenerator
|
|-->com.bea.adapter.dbms.event.DbmsEventGeneratorWorker

開発者のコメント

この ADK の AbstractPullEventGenerator を実装すると以下の抽象メソッドが実装されます。

また、以下のメソッドがオーバーライドされます。

これらのメソッドは EIS 固有で、データベースとの対話中に EIS のコンテンツ内のイベントを識別するために使用され、イベント定義やイベントが作成および削除されます。また、エラーが発生した場合、これらのメソッドを使用してデータベースで実行されるトリガを作成および削除できます。

このクラスのキーメソッドは postEvents() です。このメソッドはデータベースの EVENT テーブル内の列から読み込まれたデータの IEvent オブジェクトを作成します。このメソッドでは IEventRouter が引数として使用されます。IEventDefinition オブジェクトの createDefaultEvent() メソッドを使用して IEvent が作成されると、postEvents() がイベント データを設定し、router.postEvent(event) を呼び出してイベントがルータに伝えられます。イベントがルータに送られるとデータベースからイベント データの該当する列が削除されます。

メソッド setupNewTypes() はデータベースに対して適切なトリガが作成されていることを確認して新しいイベント定義を作成します。このメソッドは各イベント定義ごとにトリガ情報オブジェクトを作成します。このオブジェクトにはイベント定義で表されるカタログ、スキーマ、テーブル、トリガ タイプ、およびトリガ キーが記述されます。トリガ キーのマップが保存されるため、トリガが重複してデータベースに追加されることがありません。マップ内に新しいキーが存在しない場合はデータベースに対するトリガ テキストが生成されます。

removeDeadTypes() メソッドもトリガ情報オブジェクトを作成しますが、このオブジェクトは、1 つ以上のイベント タイプが一致しているかどうかの検査も行います。このトリガと一致するすべてのイベント定義は、マップから削除され、次にデータベースからトリガ自身が削除されます。

手順 6 : DBMS サンプル アダプタのデプロイ

SPI、CCI、イベント インタフェースを実装したときに、以下の手順に従ってアダプタをデプロイします。

手順 6a : 環境のセットアップ

アダプタを WebLogic Integration 環境にデプロイする前に、ご使用のコンピュータでのアダプタの場所を決定します。アダプタは、WLI_HOME/adapters/dbms にあります。WLI_HOME を、WebLogic Integration がインストールされているディレクトリのパス名に置き換えます。以後、この格納場所を ADAPTER_ROOT と呼びます。

手順 6b : ra.xml ファイルの更新

DBMS サンプル アダプタでは、アダプタの RAR ファイル(META-INF/ra.xml)の中に、ra.xml ファイルが組み込まれています。DBMS サンプル アダプタでは、AbstactManagedConnectionFactory クラスが拡張されているため、以下のプロパティが ra.xml ファイルで定義されます。

DBMS サンプル アダプタには、以下の表に示す宣言も必要です。

表 E-3 ra.xml のプロパティ

プロパティ

UserName

DBMS サンプル アダプタのログイン ユーザ名

Password

ユーザ名に対するパスワード

DataSourceName

JDBC 接続プールの名前


 

DBMS サンプル アダプタの詳細な ra.xml ファイルは、次に示すディレクトリで参照できます。

WLI_HOME/adapters/dbms/src/rar/META-INF/

手順 6c : RAR ファイルの作成

クラス ファイル、ロギング コンフィグレーション情報、メッセージ バンドルは JAR ファイルに収集される必要があります。次にこのファイルと META-INF/ra.xml を RAR ファイルに統合します。Ant build.xml ファイルは、この RAR ファイルの適切な構成を示しています。

手順 6d : JAR および EAR ファイルの構築

JAR および EAR ファイルを構築するには、次の手順を実行します。

  1. テキスト エディタで、WLI_HOME/adapters/utils にある antEnv.cmd (Windows) または antEnv.sh (UNIX) を編集します。以下の変数に有効なパス名を割り当てます。

  2. コマンドラインから antEnv を実行し、必要な環境変数の新しい値を有効にします。

  3. WLI_HOME/adapters/dbms/project に移動します。

  4. WLI_HOME/adapters/dbms/project ディレクトリから ant release を実行して、アダプタを構築します。

手順 6e : EAR ファイルの作成とデプロイ

DBMS サンプル アダプタは、EAR ファイルを作成後、デプロイを実行して表示できます。手順は、次のとおりです。

  1. 以下のリストで示すように、アダプタの EAR ファイルをドメインの config.xml ファイルで宣言します。

コードリスト E-9 DBMS サンプル アダプタの EAR ファイルの宣言

<!-- EAR ファイルのデプロイ -->
<Application Deployed="true" Name="BEA_WLS_DBMS_ADK" Path="WLI_HOME/adapters/dbms/lib/BEA_WLS_DBMS_ADK.ear">
     <ConnectorComponent Name="BEA_WLS_DBMS_ADK" Targets="myserver"
URI="BEA_WLS_DBMS_ADK.rar"/>
    <WebAppComponent Name="DbmsEventRouter" Targets="myserver"
URI="BEA_WLS_DBMS_ADK_EventRouter.war"/>
    <WebAppComponent Name="BEA_WLS_DBMS_ADK_Web" Targets="myserver"
URI="BEA_WLS_DBMS_ADK_Web.war"/>
</Application>

注意: WLI_HOME は、使用する環境の WebLogic Integration のインストール ディレクトリのパス名に置き換えます。

  • 以下のように入力して、WebLogic Server Administration Console を起動します。

    http://host:port/console

    この URL で、host はサーバの名前、port はリスン ポートをそれぞれ表します。例 :

    http://localhost:7001/console

  • WebLogic Server Administration Console で、以下を行います。

    1. アダプタ グループをデフォルトの WebLogic Server セキュリティ レルムに追加します。

    2. ユーザをアダプタ グループに追加します。

    3. 変更を保存します。

  • アプリケーション ビューをコンフィグレーション、およびデプロイするには、次の場所に移動します。

    http://host:port/wlai

    この URL で、host はサーバの名前、port はリスン ポートをそれぞれ表します。例 :

    http://localhost:7001/wlai

    [Application View Console - Logon] ページが表示されます。


     

  • 該当するフィールドにユーザ名とパスワードを入力し、WebLogic Integration にログオンします。

  • Application Integration ユーザーズ ガイド』の「アプリケーション ビューの定義」に示す手順に従って、アプリケーション ビューをコンフィグレーションし、デプロイします。
  •  


    DBMS サンプル アダプタの設計時 GUI の開発工程

    設計時 GUI は、ユーザがアプリケーション ビューの作成、サービスとイベントの追加、および WebLogic Integration 環境に搭載されているアダプタのデプロイを実行できるインターフェースです。この節では、DBMS サンプル アダプタに対して設計時 GUI がどのように開発されるかについて説明します。

    手順 1 : 要件の決定

    DBMS に対する設計時 GUI の開発を始める前に、以下のパラメータの値を決定する必要があります。

    手順 2 : 必要な Java Server Pages の決定

    DBMS サンプル アダプタは、設計時 GUI に ADK に付属する Java Server Pages (JSP) を使用します。アダプタ固有の機能を提供するために、追加 JSP が提供されています。追加 JSP を以下の表に示します。

    表 E-4 追加の ADK JSP

    ファイル名

    説明

    addevent.jsp

    [Add Event] ページでは新しいイベントをアプリケーション ビューに追加できる。

    addservice.jsp

    [Add Service] ページでは新しいサービスをアプリケーション ビューに追加できる。

    browse.jsp

    [Browse] ページではロジック フローが処理され、DBMS サンプル アダプタのブラウズ ウィンドウに表示される。この機能はこのアダプタ専用に開発されたが設計時インタフェースとベースのアダプタ間の非常に一般的な対話を表す。

    [Browse] ページは、ADK の AbstractDesignTimeRequestHandler を拡張する DesignTimeRequestHandler (ハンドラ) を呼び出す。DBMS サンプル アダプタの参照機能を理解するための最適な方法は、アダプタをデプロイし、Web ブラウザを使用して設計時のフレームワークにアクセスすること。

    confconn.jsp

    [Confirm Connection] ページは、EIS の接続パラメータを指定するためのフォーム。

    testform.jsp

    [Testform] ページは、ADK の testsrvc.jsp ページに組み込まれている(<jsp:include page='testform.jsp'/>)。この対話には InteractionSpec が使用され、サービスの SQL が表示される。次に、必要なユーザ入力データを集めてサービスをテストするためのフォームが作成される。

    フォームを作成するために、Testform はハンドラのアプリケーション ビューから RequestDocumentDefinition を取得し、それを .jsp Writer と共に com.bea.adapter.dbms.utils.TestFormBuilder と呼ばれるユーティリティ クラスに渡す。このクラスが、フォームを作成する。


     

    手順 3 : メッセージ バンドルの作成

    テキスト ラベル、メッセージ、および例外のインターナショナライゼーションをサポートするため、DBMS サンプル アダプタでは、テキスト プロパティ ファイルに基づくメッセージ バンドルが使用されます。プロパティファイルには、BEA_WLS_SAMPLE_ADK プロパティ ファイルからコピーされた名前と値の組み合わせがあり、新しいエントリが DBMS アダプタ固有のプロパティに追加されています。

    DBMS サンプル アダプタのメッセージ バンドルは、WLI_HOME/adapters/dbms/src ディレクトリに格納されています。これは、ADK と一緒にインストールされています。詳細については、同じディレクトリ内の BEA_WLS_DBMS_ADK.properties ファイルを参照してください。

    メッセージ バンドルの作成方法の詳細については、次に示すサイトにある JavaSoft チュートリアルを参照してください。

    http://java.sun.com/docs/books/tutorial/i18n/index.html

    手順 4 : 設計時 GUI の実装

    設計時 GUI を実装するには DesignTimeRequestHandler クラスを作成する必要があります。このクラスによりフォームからのユーザ入力が受け付けられ、設計時アクションの実行メソッドが提供されます。DesignTimeRequestHandler の詳細については、手順 4 : 設計時 GUI の実装を参照してください。

    DBMS サンプル アダプタのパブリック クラス DesignTimeRequestHandler により AbstractDesignTimeRequestHandler が拡張され、次の表に示すメソッドが提供されます。

    表 E-5 DBMS サンプル アダプタの設計時 GUI 用メソッド

    メソッド

    説明

    browse(java.lang.String dbtype, com.bea.connector.DocumentRecord input)

    addservc.jsp と addservc.jsp ページの参照機能に対するバックエンド動作を処理する。

    getAdapterLogicalName()

    アダプタの論理名を返し、アプリケーション ビューなどのエンティティがデプロイされた場合に親クラスをサポートする。

    getManagedConnectionFactoryClass()

    EIS に対する CCI 接続を取得するために親クラスで使用されるアダプタの SPI ManagedConnectionFactory 実装クラスを返す。

    supportsServiceTest()

    このアダプタが設計時にサービスのテストをサポートしていることを示す。

    initServiceDescriptor(ActionResult result, IServiceDescriptor sd, HttpServletRequest request)

    サービスのリクエストや応答の作成に関するサービス記述子を初期化する。通常、EIS に対する対話を実行し、メタデータを読み込んで、そのメタデータを XML スキーマに変換する。

    そのため、アダプタの CCI インタフェースが使用された。このメソッドは、AbstractDesignTimeRequestHandleraddsrvc メソッドによって呼び出される。

    initEventDescriptor(ActionResult result, IEventDescriptor ed, HttpServletRequest request)

    イベント記述子を初期化する。イベント記述子ではアプリケーション ビューのイベントに関する情報が定義される。サブクラスではこのメソッドの実装方法を定義する必要がある。

    イベントがサポートされていない場合、UnsupportedOperationException が呼び出される。ただし、イベント名と定義の有効性が検証され、アプリケーション ビューに対する既存のイベントでないことが確認されてから、このメソッドが(AbstractDesignTimeRequestHandler によって)呼び出される。

    GetDatabaseType()

    使用するデータベース管理システムのタイプを決定する。WebLogic Integration は PointBase、Oracle、Microsoft SQL Server、 および Sybase をサポート。


     

    手順 5 : Java Server Pages の記述

    開発プロセスに以下のような実践を含めることを検討してください。

    カスタム JSP Tags の使用

    Java Sever Pages (JSP) は display.jsp ページに表示されるため、display.jsp は最初に記述する必要のある .jsp ファイルです。ADK にはカスタム JSP タグのライブラリが実装されています。これらのタグは ADK および DBMS サンプル アダプタの Java Server Pages 全体を通して使用されます。これらのタグは、検証機能を追加したり、ユーザがクリックしたときにフィールド値を保存するなど、さまざまな機能をサポートしています。

    オブジェクトのステートの保存

    ADK を使用してアダプタ向けに JSP を記述する際、オブジェクトのステートを保存する必要が生じる場合があります。これにはいくつかの方法があります。AbstractDesignTimeRequestHandler には編集されているアプリケーション ビューの ApplicationViewDescriptor が保持されます。このファイルからのハンドラの呼び出しが効率的であるため、このファイルは、しばしばステートを保存するのに最善の場所となります。

    別の選択肢として、従来のメソッド(getApplicationViewManager()getSchemaManager() および getNamespaceManager())で AbstractDesignTimeRequestHandler から Manager Bean を要求して、アプリケーション ビューに関する情報をリポジトリから検索することもできます。このメソッドには時間がかかりますが、必要になる場合もあります。また JSP なのでセッション オブジェクトも使用できます。ただし、セッション内のすべてのオブジェクトを明示的に java.io.serializable インタフェースに実装する必要があります。

    WEB-INF/web.xml のデプロイメント記述子の記述

    WEB-INF/web.xml のデプロイメント記述子を記述します。通常は、アダプタの web.xml ファイルを開始点として使用し、必要に応じてコンポーネントを変更します。このアダプタの web.xml ファイルを参照するには、次に示すディレクトリに移動してください。

    WLI_HOME/adapters/dbms/src/war/WEB-INF/web.xml

    詳細については次に示す BEA WebLogic Server 製品マニュアルを参照してください。

    http://edocs.beasys.co.jp/e-docs/index.html

     

    ページの先頭 前 次