Oracle® Fusion Middleware

Oracle Fusion Middlewareカスタム・テクノロジ・アダプタの開発

12c (12.1.3)

E57538-04(原本部品番号:E51514-04)

2015年10月

Oracle JDeveloperを使用したカスタム・アダプタの開発およびFusion Middlewareと統合するためのアダプタ・ランタイム・コンポーネントの開発についての情報を提供するOracle SOA (サービス指向アーキテクチャ)開発者向けのドキュメント。

Oracle Fusion Middleware Oracle Fusion Middlewareカスタム・テクノロジ・アダプタの開発、12c (12.1.3)

E57538-04

Copyright © 2015, 2015, Oracle and/or its affiliates. All rights reserved.

原本著者: Oracle Corporation

原本協力者: Amandeep Mahajan, Bo Stern, Srimant Misra, Deepak Agarwal, Raghavendra Chandrashekar, Stephen Mcritchie, Michael Chiocca, Rod Fernandez, Sunil Gopal, Manas Panda, Sagar Shiruguppi, Vikas Anand, Sujay Bandyopadhyay, Syed Zarina, Anuj Kaushal, Ashish Mathur, Prateek Maheshwari, Dhaval B Shah, Sandeep Jain

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

1 カスタム・テクノロジ・アダプタを開発する上での主な考慮事項

- 1.1 予備的決定: アダプタを一方向と双方向のいずれにするか

- 1.2 用途

2 カスタム・アダプタの画面の標準的な外観

3 Oracle JDeveloperを使用したカスタム・アダプタの開発

- 3.1 JCAアダプタ・ウィザード・フレームワークの理解と概要

- 3.1.1 SCAエンドポイント・インタフェースの実装

- 3.1.2 JCAアダプタ・ウィザード・クラスの拡張およびその抽象メソッドの実装

- 3.1.3 カスタム・アダプタ・ウィザードのページの実装

- 3.1.4 JcaDataInterfaceの実装

- 3.1.5 共通機能に対するフレームワーク・ページの使用

- 3.1.6 ConnectionPageの拡張

- 3.1.7 WsdlSelectionPageの拡張

- 3.1.8 JcaOperationPageの拡張

- 3.1.9 CustomAdapterConfigクラスの使用または拡張(あるいはその両方)

- 3.1.10 CommonAdapterSchemaPageまたはCommonAdapterInOutSchemaPageの拡張

- 3.1.11 「終了」ページの追加

- 3.1.12 終了後処理の実行(オプション)

- 3.1.13 sca-config.xmlへのAdapterType要素の追加

- 3.1.14 パブリック・ユーティリティ・メソッドの使用

4 Fusion Middlewareとの統合に向けたアダプタ・ランタイム・コンポーネントの開発

- 4.1 設計全体の理解

- 4.2 接続構成

- 4.3 実行時インタフェースおよび規定

- 4.3.1 インバウンド

- 4.3.2 JCA 1.5 の規定およびインタフェース

- 4.3.3 Interfacejavax.resource.spi.work.Work

- 4.3.4 Interfacejavax.resource.spi.work.WorkManager

- 4.3.5 アウトバウンドにおける考慮事項

- 4.3.6 変換サービス・インタフェース

- 4.4 WebLogic JCAリソース・アーカイブRARの作成

- 4.5 WebLogicアプリケーション・サーバーへのRARファイルのデプロイ

- 4.6 カスタム・アダプタのテスト

5 カスタム・アダプタのOracle JDeveloperでの使用可能化

6 カスタム・アダプタのSDK開発のサンプル

- 6.1 ソース・コード

- 6.2 SCAコンポジット・アプリケーションのサンプル

7 ビルドに必要なJARファイルのリスト

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

『Oracle Fusion Middlewareカスタム・テクノロジ・アダプタの開発』は、これらのアダプタを使用するすべてのユーザーを対象としています。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティへの取り組みについては、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)にアクセスしてください。

Oracle Supportへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連ドキュメント

詳細は、Oracle Fusion Middleware 12cドキュメンテーション・セットの次のドキュメントを参照してください。

- Oracle WebLogic Serverのリソース・アダプタの開発

- Oracle® Fusion Middleware Oracle E-Business Suite Adapterユーザーズ・ガイド

- 『Oracle SOA Suiteを使用したSOAアプリケーションの開発』

- 『Oracle Fusion Middlewareの管理』

- Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理

- Oracle Service Busの管理

- Oracle® Application Serverレガシー・アダプタ・インストレーション・ガイド

表記規則

このマニュアルでは次の表記規則を使用します。

表記規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 カスタム・テクノロジ・アダプタを開発する上での主な考慮事項

この章では、カスタム・テクノロジ・アダプタの開発を開始する前に考慮する必要のある事項について説明します。

Oracle JCA準拠アダプタは、ビジネス・アプリケーションの統合を可能にし、異種アプリケーション間の相互通信に必要な堅牢、軽量で高度にスケーラブルな標準ベースの統合フレームワークを提供します。自身の要件に基づいて、独自のカスタム・アダプタおよびランタイム・コンポーネントを作成できます。

カスタムJCAアダプタ・ウィザードは、相互作用/アクティブ化の仕様、プロパティおよびデフォルト値を構成ファイルから読み取って表示する汎用アダプタ・ウィザードです。ユーザーは、JDeveloperのデザインタイム・ファシリティを採用して、ウィザードの使用、仕様の選択、デフォルトのプロパティ値のオーバーライドおよびアダプタへの新規プロパティの追加を実行します。

つまり、カスタムJCAアダプタでは、ユーザーから情報を取得し、その情報を使用して、ランタイム・アダプタに必要な相互作用/アクティブ化の仕様およびプロパティが含まれるWSDLファイルおよびJCAファイルを作成する必要があります。

1.1 予備的決定: アダプタを一方向と双方向のいずれにするか

カスタム・アダプタを作成する際に、最初に決定する必要がある事項は、カスタム・アダプタを一方向と双方向のいずれにするか、すなわちアウトバウンド(同期)操作の呼出しをサポートするかどうか、つまりJCA共通クライアント(CCI) APIを使用するかどうかです。あるいは、アダプタでアウトバウンドとインバウンド両方の(非同期)メッセージ・フローをサポートする必要があるかどうかです。

この決断を下し、アウトバウンドおよびインバウンド・メッセージ・フローをサポートするカスタム・アダプタを作成する場合、次の点について認識しておくことが重要です。

- アウトバウンド・メッセージ・フローをサポートするには、アダプタでjavax.resource.cci.InteractionSpecの1つ以上の実装を定義する必要があります。

- インバウンド・メッセージ・フローをサポートするには、アダプタでjavax.resource.spi.ActivationSpecの1つ以上の実装を定義する必要があります。

これらの仕様(Java Beans)はそれぞれ、アダプタでサポートする特定の操作を定義する名前と値のペアとしてメタデータを提供します。

たとえば、FTPアダプタの場合、相互作用の仕様では、DirectoryというBeanプロパティが公開されます。FTPアダプタが呼び出された場合、呼出し元は、相互作用の仕様プロパティDirectoryを設定することによって(たとえば、FtpInteractionSpec.setDirectory("/tmp/receive")を設定することによって)、特定のディレクトリにペイロードを配置するようアダプタに指示することができます。

アダプタで異なる種類またはカテゴリの呼出しがサポートされる場合、それぞれの呼出しで別々のプロパティ・セットが必要であり、javax.resource.cci.InteractionSpecの個別実装によって各呼出しタイプをモデリングできます。

たとえば、アダプタではさらに、SshFtpInteractionSpecおよびSSLFtpInteractionSpecを実装できます。1つ目の相互作用の仕様ではS-FTPプロトコルがサポートされ、2つ目の相互作用の仕様ではFTP/Sプロトコルがサポートされます。

この情報およびアダプタでサポートされる操作に関するアダプタ使用の可能性について認識しておくことは、カスタマイズにおいて役立つ一歩となります。

1.2 用途

アダプタについてさらに探求を進めると、カスタムJCAアダプタ・ウィザードには、いくつかの用途があることがわかります。

- 顧客またはサード・パーティ製アダプタのプロバイダは、カスタム・アダプタ・ウィザードをそのまま使用して、自分たちのカスタム・ランタイム・アダプタをサポートできます。この場合、カスタム・アダプタ構成ファイル(customAdapter-config.xml)を用意(または拡張)することがだけが必要です。

- 顧客またはサード・パーティ製アダプタ・プロバイダは、より限定的なアダプタの作成が必要な場合、カスタム・アダプタのクラスを拡張できます(たとえば、アダプタに適合するようにテキストを変更できます)。

- カスタム・アダプタ・ウィザードは、JCAアダプタ・フレームワークを使用して、SCAEndpointインタフェースにフックすることによって新しいアダプタ・ウィザードを作成する(または古いアダプタ・ウィザードを変換する)簡単な例です。SOA jdev拡張機能をインストールすると、カスタム・アダプタのjavaソース・ファイルは<JAVA_HOME>/developer/integration/adapters/samples/customに配置されます

アダプタ・デザインタイム・コンポーネントの作成について学ぶ前に、デフォルトのカスタム・アダプタ・ウィザードを構成する画面について理解しておく必要があります。

2 カスタム・アダプタの画面の標準的な外観

この章では、ユーザーが標準的なカスタム・アダプタ・ウィザードを使用してアダプタを構成する際にユーザーに表示される画面のウォークスルーを示します。

ユーザーがJDeveloperの「公開されたサービス」スイムレーンまたは「外部参照」スイムレーンに「カスタムJCAアダプタ」アイコンをドロップすると、Jdeveloperにアダプタ構成の「ようこそ」ページが表示されます。

図2-1 アダプタ構成ウィザード: 「ようこそ」画面

ユーザーは、この「ようこそ」ページで、「次へ」を選択します。

サービス名ページが表示されます。ここでユーザーはサービス名を入力できます。

図2-2 「サービス名」ページ

config.xmlに<connection-factory>エントリが含まれている場合は、カスタム・アダプタ・ウィザードの「接続情報」ページにデフォルトの「コネクション・ファクトリの位置」が表示されます。

図2-3 アダプタ構成ウィザード: 「接続情報」ページ

アダプタで<connection-factory>エントリは必須ではありません。config.xmlファイルに<connection-factory>エントリが含まれない場合、ユーザーがアダプタのウィザードを実行するときにこのページは表示されません。

「アダプタ・インタフェース」画面では、ユーザーはWSDLを生成するための操作の名前およびスキーマを指定するか、既存のWSDLをインポートできます。

ユーザーが後者を選択した場合、次のスクリーンショットに示すように、WSDLのURL、ポート・タイプおよび操作を指定する必要があります。

図2-4 アダプタ構成ウィザード: 「アダプタ・インタフェース」画面

ユーザーがカスタム・アダプタの「操作」ページで「インバウンド・アクティブ化」を選択した場合、ユーザーに対してcustomAdapter-config.xmlファイルに含まれるアクティブ化クラス名(またはこの例のように変換済表示名)のリストが表示され、ユーザーはこのリストから選択できます。

図2-5 インバウンド操作の操作名および変換済アクティブ化表示名が表示されたアダプタ構成ウィザード

ユーザーがカスタム・アダプタの「操作」ページで「アウトバウンド相互作用」を選択した場合、customAdapter-config.xmlファイルに含まれる相互作用クラス名(またはこの例のように変換済表示名)のリストが表示され、ユーザーはこのリストから選択できます。

図2-6 操作名および相互作用名とともにアウトバウンド相互作用が表示されたアダプタ構成ウィザード: 「操作」画面

次のページには、生成されたcustomAdapter-config.xmlに含まれるクラスに関連付けられているプロパティが、前のダイアログで選択したクラス名に基づいて表示されます。

図2-7 アダプタ構成ウィザード: 「JCAプロパティ」画面

ユーザーは、このページでデフォルト値を変更することも、プロパティの追加または削除を行うこともできます。

カスタム・アダプタの「メッセージ」ページには、「メッセージ」ページがあるその他のアダプタで動作するものと同じ機能が含まれます。このページには、ネイティブ・フォーマットが必要かどうかを示すチェック・ボックス、ネイティブ・フォーマットのスキーマを定義するボックス、メッセージ・スキーマへのURLおよびスキーマ要素が含まれます。

図2-8 カスタム・アダプタ・ウィザードの「メッセージ」ページ

ユーザーが「メッセージ」ページの「終了」を選択すると、「JDeveloper」ウィンドウのSOAダイアグラムに新規カスタムJCAアダプタが表示され、「終了」ページが表示されます。

図2-9 カスタム・アダプタ・ウィザードの「終了」ページ

ユーザーがSOAダイアグラムでカスタムJCAアダプタをダブルクリックすると、同じアダプタ・ウィザードに戻ります。これによって、ユーザーは、前に入力した値を変更できます。

3 Oracle JDeveloperを使用したカスタム・アダプタの開発

この章では、Oracle JDeveloperを使用してカスタム・アダプタを開発する方法について説明します。

Oracle JDeveloperを使用して、独自のカスタム・アダプタを開発できます。このためには、基本の開発フレームワークについて理解しておく必要があります。

3.1 JCAアダプタ・ウィザード・フレームワークの理解と概要

JcaAdapterWizard拡張クラスを使用すると、初期ウィザード・ページを追加できます。その後はいつでも追加のウィザード・ページを追加できます。たとえば、ほとんどのアダプタ・ウィザードで、操作タイプ(インバウンド/アウトバウンド)の選択後にウィザードのページが追加されます。ユーザーの気が変わって、別の操作タイプを選択した場合、ウィザードのページは削除され、新しいページが追加されます。

各ウィザード・ページで、ユーザー入力が収集されます。また、アダプタ固有のコンテキストを登録して、ウィザード・ページ間で情報を共有できるようにすることも可能です。

ユーザーが「終了」ボタンを選択すると、フレームワークによって各ウィザード・ページで、ページが表示されていた順序でbuildDataModel()メソッドが呼び出されます。各ページのbuildDataModel()は、ページの画面データをデータ・モデルにコピーする処理を担当します。

フレームワークによって、データ・モデルからアーティファクトが作成されます。アダプタでは、フレームワークでの処理の終了前または終了後に呼び出すインタフェースを登録することもできます。

注意:

アダプタ・フレームワークでは、すべてのWSDL生成が処理されます。(古い) buildWsdl()メソッドも各ウィザード・ページで引き続き呼び出されますが、ほとんどのウィザード・ページでは、このメソッドをオーバーライドできません。そして、WSDL処理をスーパー・クラスに委ねる必要があります。

次の表とダイアグラムは、カスタム・アダプタを構成する様々なクラスを示しています。この次に、クラスのダイアグラムを示します。

表3-1 カスタム・アダプタのクラス

クラス

説明

SOAダイアグラム

composite.xmlのグラフィカル・エディタ。

SCAエンドポイント

SOAダイアグラムとアダプタ・フレームワークとの間のプロキシを提供します。

JcaAdapterWizard

初期ウィザード・ページの追加を可能にします。

CustomAdapterWizard

パブリック・メソッドをオーバーライドできるようにJcaAdapterWizardを拡張します。

JcaServiceName Page

「サービス名」ページを提供します。

CustomConnectionPage

コネクション・ファクトリを求めるプロンプトを表示して、この情報をデータ・モデルに格納するページを作成します。

CustomWSDLSelectionPage

デフォルトのWSDLを生成するのではなく、既存のWSDL、ポートタイプおよび操作を選択するオプションをユーザーに与えます。

CustomOperationPage

選択された操作に基づいてウィザードのページを追加したり削除したりします。

CustomPropertyPage

ユーザーがアクティブ化および相互作用の仕様プロパティを設定できるようにします。

図3-1 カスタム・アダプタのクラス・ダイアグラム

基本を理解すれば、実装の詳細の理解へと進むことができます。

- SCAエンドポイント・インタフェースの実装

- JCAアダプタ・ウィザード・クラスの拡張およびその抽象メソッドの実装

- カスタム・アダプタ・ウィザードのページの実装

- JcaDataInterfaceの実装

- 共通機能に対するフレームワーク・ページの使用

- ConnectionPageの拡張

- WsdlSelectionPageの拡張

- JcaOperationPageの拡張

- CustomAdapterConfigクラスの使用または拡張(あるいはその両方)

- CommonAdapterSchemaPageまたはCommonAdapterInOutSchemaPageの拡張

- 「終了」ページの追加

- 終了後処理の実行(オプション)

- sca-config.xmlへのAdapterType要素の追加

- パブリック・ユーティリティ・メソッドの使用

3.1.1 SCAエンドポイント・インタフェースの実装

SCAEndpointは、JDeveloperの「コンポーネント・パレット」から新規アダプタがSOAダイアグラムにドロップされたとき(SCAEndpoint.createImplementation)、既存のアダプタがJDeveloperのSOAダイアグラム内でダブルクリックされたとき(setInterfaceInfoおよびdisplayServiceEditor)またはアダプタがSOAダイアグラムから削除されたとき(SCAEndpoint.delete)に呼び出されます。

SCAEndpointの実装は、SOAダイアグラムとアダプタ・フレームワークとの間のプロキシです。これは、アダプタ・ウィザードのメイン・コンストラクタの呼出しを担当します。

createEndpointメソッドおよびupdateEndpointメソッドは、JcaAdapterWizard拡張クラスのdisplay()メソッドを呼び出します。

この例は、oracle.tip.tools.ide.pm.wizard.adapter.custom.CustomScaEndpointImpl.javaを参照してください。

3.1.2 JCAアダプタ・ウィザード・クラスの拡張およびその抽象メソッドの実装

oracle.tip.tools.ide.pm.wizard.adapter.jca.JcaAdapterWizardクラスを拡張し、その抽象メソッドを実装することによって、アダプタ・ウィザードでJCAアダプタ・フレームワークを使用できるようになります。

このクラスの抽象メソッドとしては、getAdapterTypeString()およびgetWelcomeMessageがあり、これらのメソッドによって、汎用ウィザード・ページに必要なテキストが入力されます。

抽象メソッドaddInitialWizardPages()によって、アダプタ・ウィザードのページが追加されます。このメソッドでは、初期ページ、つまりユーザーの入力に関係なく常にナビゲーション先となるページのみが追加されます。

初期ページは通常、JcaServiceNamePage,、ConnectionPage(接続が必要な場合)およびWsdlSelectionPage(アダプタでサポートされる場合。次の詳細を参照)から開始します。

アダプタでWsdlSelectionPageがサポートされない場合、最後の初期ウィザード・ページは通常OperationPageになります。

WsdlSelectionPageおよびOperationPageでのユーザー入力によって、ウィザードでのナビゲーションを変更できます(つまり、表示されるページを変更できます)。また、ユーザーがこれらのページで「次へ」ボタンを選択したときに、追加のウィザード・ページが追加されます。

オプションで、JcaAdapterWizardのパブリック・メソッドをオーバーライドできます。これらのメソッドには次のものがあります。

- すべてのページで使用可能なアダプタ固有のメソッドを登録するには、getAdapterSpecificContextをオーバーライドします。

- ユーザーが「終了」ボタンを選択したときに呼び出されるようにAdapterWizardFinishInterfaceを登録できます。JcaAdapterWizard拡張クラスのgetAdapterWizardFinishメソッドをオーバーライドすることによって、このインタフェースを登録します。

- デフォルトのデータ・モデルを使用するのではなく、独自のデータ・モデルにアクセスする場合は、readJCADataModelをオーバーライドします。ただし、これは推奨されていません。

パブリック・メソッドのオーバーライドの例は、<JDEV_HOME>\jdeveloper\integration\adapters\samples\customのoracle.tip.tools.ide.pm.wizard.adapter.custom.CustomAdapterWizard.javaを参照してください。

3.1.3 カスタム・アダプタ・ウィザードのページの実装

アダプタ・ウィザードのページすべてで、techAdapterWizardPage (Jpanelから継承)を拡張する必要があります。

ページ・コンストラクタでは、ウィザードにページを追加して、必要なその他のコンテキスト情報を設定するsetContextAndPage()を呼び出す必要があります。oracle.tip.tools.ide.pm.wizard.adapter.custom.CustomConnectionPage.javaの例を参照してください。

ユーザーが「終了」ボタンを選択すると、アダプタ・フレームワークによって各ウィザード・ページで、ページが表示されていた順序でbuildDataModel()メソッドが呼び出されます。buildDataModel()メソッドは、ページの画面データをデータ・モデルにコピーする処理を担当します。これは、単に、次のようなコードを使用して実行できます。

JcaDataInterface jdata = (JcaDataInterface)getDataModel();

jdata.setProperty(propname,screenField.getText().trim());

JcaAdapterContextは、すべてのページで使用できます。このとき、有用な情報を取得するための多くのアクセッサ・メソッドが使用されます。ウィザード・ページで一般的に使用されるアクセッサのリストの一部を次に示します。

表3-2 JcaAdapterContextアクセッサ・メソッド

アクセッサ・メソッド

注意

Object getAdapterSpecificContext();

Adapterコンテキスト・オブジェクト。

JcaDataInterface getDataModel();

データ・モデルを取得します。

Project getProject();

ほとんどのJDev相互作用に必要なJDeveloperのProjectオブジェクトを取得します。これには、プロジェクト名も含まれます。

Frame getAdapterFrame();

これは、新規ダイアログまたはポップアップ・エラー・メッセージの呼出し時に必要なFrameオブジェクトを返します。

Frame getAdapterFrame();

これは、新規ダイアログまたはポップアップ・エラー・メッセージの呼出し時に必要なFrameオブジェクトを返します。

boolean isUpdateMode();

既存のアダプタが更新されていることを示します。

String getServiceName();

サービス名を取得します。

String getServiceType();

サービス・タイプを取得します。

WsdlInfo getExistingWsdlInfo();

既存のWSDLが選択されなかった場合はNULLです。これは、WsdlSelectionPageでユーザーが選択したWsdl/porttypeのWsdlInfoになります。

String getOperationName();

操作名を取得します。

Boolean isInbound();

アダプタがインバウンド(Read、Get)の場合、Trueです。

Connection getConnection();

データベース・アダプタなど、接続オブジェクトを使用するアダプタの接続を取得します。

最初から開発したウィザード・ページの例は、oracle.tip.tools.ide.pm.wizard.adapter.custom.CustomPropertiesPage.javaを参照してください。

3.1.4 JcaDataInterfaceの実装

JcaDataInterfaceのほとんどのメソッドに、次の2つのバージョンがあります。

- 1つ目が、仕様を認識するバージョンで、プロパティまたは属性の所属先のアクティブ化または相互作用の仕様を示す(activationまたはinteraction) spec引数を取ります。

- もう1つが、仕様を認識しないバージョンで、spec引数は取りません。このドキュメントの例ではすべて仕様非認識APIが使用されています。

これらのメソッドの仕様非認識バージョンは、一度に1つの仕様のみをサポートするアダプタ・ウィザード向けです。たとえば、FileAdapterインスタンスでは、ファイルの読取りかファイルへの書込みのいずれかを実行できます。単一インスタンスで両方を実行することはできません。

仕様認識メソッドは、複数の仕様をサポートするアダプタ・ウィザードで使用する必要があります。たとえば、MQアダプタでは、非同期コールバックも使用する読取り操作がサポートされています。

この場合、MQアダプタ・ウィザードでは、アクティブ化の仕様と相互作用の仕様が生成されます。このため、MQアダプタ・ウィザードでは、プロパティまたは属性の所属先がどちらの仕様であるかを明確にするために、仕様認識メソッドを使用する必要があります。

spec引数には、spec文字列のみが含まれます。

仕様非認識APIでは、アクティブ化または相互作用の仕様を追加する前にプロパティを設定できる古いアダプタもサポートされます。

3.1.5 共通機能に対するフレームワーク・ページの使用

「ようこそ」ページ、「サービス名」ページおよび「終了」ページはすべてのアダプタ・ウィザードに共通です。これらのページは、アダプタ・フレームワークによって制御されるため、ウィザードに追加する必要はありませんが、「ようこそ」ページ(JcaAdapterWizard内)および「終了」ページのコンテンツをオーバーライドするためのアクセッサ・メソッドがあります。

フレームワーク・ページを使用する際は、アダプタによってこれらのページを拡張する必要があります。次に、各タイプの拡張について説明します。

3.1.6 ConnectionPageの拡張

すべてではありませんが、ほとんどのアダプタ・ウィザードに接続ページが必要です。たとえば、AQアダプタには、ユーザーが使用可能なキューのリストを問い合せて、表示できるようにするデータベース接続ページが必要です。

アダプタ・ウィザードにデータベース接続が必要な場合、addInitialWizardPagesにJcaDBConnectionPageを追加して、このメソッドをそのまま使用します。AdapterWizardContextで次のアクセッサを使用することによって、後続のページでJDeveloperの接続オブジェクトを使用できるようになります。

Connection getConnection();

DatabaseConnectionInfo getDBConnectionInfo();

このガイドで示しているカスタム・アダプタは、独自の接続タイプを持ち、JcaDBConnectionPageは使用しないアダプタの一例です。

この場合、CustomConnectionPageによって、コネクション・ファクトリの場所を求めるプロンプトが出され、この情報が次のようなコードとともにデータ・モデルに配置されます。

JcaDataInterface jdata = (JcaDataInterface)getDataModel();
jdata.setConnectionFactoryAtrribute(JcaDataInterface.
CONNECTION_FACTORY
_LOCATION_ATTRIBUTE,connectionTextField.getText().trim());

3.1.7 WsdlSelectionPageの拡張

多くのアダプタ・ウィザード(ファイル、FTP、AQ、MQおよびJMSアダプタのウィザードなど)では、デフォルトのWSDLを生成するのではなく、ユーザーに対して、既存のWSDL、ポートタイプおよび操作を選択するオプションが用意されています。基本的に、操作の選択によって、アダプタで使用することになるスキーマが定義されます。

ただし、既存のWSDLの選択は、独自のスキーマを提供または生成するアダプタではサポートされません(たとえば、DB、B2B、BAMおよびOracle Applicationアダプタでは、独自のスキーマが生成されます)。

一部のアダプタ・ウィザードではこれら2つが複合されており、既存のWSDLが選択されると、必須スキーマを有する特定の操作が無効になります。

アダプタで既存のWSDLをサポートする必要がある場合は、WsdlSelectionPageを拡張するクラスを作成する必要があります。

この例は、CustomWsdlSelectionPageを参照してください。このクラスを拡張するために実装する必要のある抽象メソッドが3つあります。

- boolean adapterSupportsSynchRead(): アダプタに同期読取りオプションがある場合はtrueが返されます。これによって、output要素が含まれるWSDL操作をWsdlSelectionページで選択できるようになります。

- boolean adapterSupportsCallback(): アダプタでコールバック(インバウンドまたはアウトバウンド)を使用できる場合はtrueが返されます。trueの場合、WsdlSelectionページでユーザーは2つのポート・タイプを選択できます。

- createPagesForOperation(): ユーザーがWSDL操作を選択した後に、開発者は新規ウィザード・ページを追加できます。

注意:

後続のウィザード・ページでは、選択した操作でサポートされない操作および機能を無効にする必要があります。たとえば、ファイル・アダプタおよびFTPアダプタの場合、選択された操作にoutput要素が含まれるときは、「操作」ページ上の、同期読取り操作以外のすべての操作を無効にする必要があります。詳細は、JcaOperationPageの箇所を参照してください。

既存のWSDLを選択した場合でも、アダプタ・フレームワークではWSDLが生成されますが、ポート・タイプ、操作、メッセージおよびスキーマはそのWSDLでは生成されず、ユーザーが選択したWSDLがインポートされます。ラッパーWSDLで、選択されたWSDLがインポートされます。これには、importおよびpartnerlinkTypesのみが含まれます。

partnerLinkTypeを使用しないWSDLをユーザーが選択したときは、ラッパーWSDLの生成はその方法において、BPELの場合と同様です。

また、アダプタ・ラッパーWSDLでは、partnerLinkTypesが定義される上、ユーザー選択のWSDLでは使用できないヘッダー・メッセージを定義できます。

3.1.8 JcaOperationPageの拡張

すべてのウィザード操作ページ(Read/WriteやGet/Putなどの操作を選択するページ)では、JcaOperationPageをオーバーライドする必要があります。これは、JcaOperationPageでは、操作名に基づいてWSDLオブジェクト作成が扱われるためです。

操作名は、抽象メソッドgetOperationName()を実装することによって指定されます。

ほとんどの操作ページで、選択された操作に基づいてウィザードのページが追加および削除されます。アクセッサ・メソッドremovePages()では、現在のページのみでなくすべてのウィザード・ページが削除されます。

「操作」ページのbuildDataModel()メソッドは、次のようなコードを使用して、データ・モデル内のアクティブ化または相互作用の仕様を設定する処理を担当します。

JcaDataInterface jdata = (JcaDataInterface)getDataModel();
if (readRB.isSelected()){
jdata.setActivationSpec
(THIS_ADAPTERS_ACTIVATION_SPEC);
)
else{
jdata.setInteractionSpec(THIS_ADAPTERS_INTERACTION_SPEC);
}

注意:

更新モードの場合、OperationPagesで、ユーザーによる操作タイプまたは操作名の変更を可能にすることはできません。これは、その操作の存在に依存する参照にアダプタ・インタフェースがワイヤリングされる可能性があるためです。

この例は、oracle.tip.tools.ide.pm.wizard.adapter.custom.CustomOperationPage.javaを参照してください。

3.1.9 CustomAdapterConfigクラスの使用または拡張(あるいはその両方)

アダプタによっては、CustomPropertyPageを使用または拡張して、ユーザーがアクティブ化および相互作用の仕様プロパティを設定できるようにすることが可能です。

ただし、ほとんどの新しいアダプタには、独自のプロパティ・ページがあります。このことによって、プロパティの表示方法(たとえば、値のリスト、UIコントロールまたは検証)をアダプタでより高度に制御できるようになるためです。

カスタム・アダプタで構成ファイルの読取りに使用されるクラスCustomAdapterConfigはpublicなので、他のアダプタで使用したり拡張したりできます。

CustomAdapterConfigクラスでは、使用可能な仕様、プロパティおよびコネクション・ファクトリのリストが、構成ファイルcustomAdapter-config.xml(デフォルトのカスタム・アダプタ構成ファイル)から取得されます。このクラスを拡張し、getConfigFilePath()メソッドをオーバーライドすることによって、別の構成ファイルを使用できます。

属性displayResourceKeyおよびresourceBundleはオプションです。activation-spec、interaction-spec、またはproperty要素にdisplayResourceKeyが含まれている場合、フレームワークでは、getDisplayString()またはtoString()メソッドで使用可能なリソース・バンドルから表示可能なテキストを取得するキーとして、属性値が使用されます。リソース・バンドルが使用できない場合やバンドルにキーがない場合は、キー自体が表示可能なテキストとして使用されます(このため、リソース・バンドルをクラスに含める必要はありません)。

リソース・バンドルをこのクラスのコンストラクタに渡すことができますが、構成ファイル内の<connection-factory>要素のresourceBundle属性によってリソース・バンドルをオーバーライドすることもできます。

3.1.10 CommonAdapterSchemaPageまたはCommonAdapterInOutSchemaPageの拡張

多くのアダプタ・ウィザードで、ユーザーは、単一スキーマまたはリクエスト/リプライ・スキーマを選択して、アダプタで使用するメッセージを定義できます。

このようなウィザードでは、CommonAdapterSchemaPage (一方向操作を使用するアダプタ向け)またはCommonAdapterInOutSchemaPage (一方向操作とリクエスト/リプライ操作を両方とも使用するアダプタ向け)が、スキーマに関連したオプション(typeChooser、NXSDウィザード、不透明なスキーマおよびWSDL生成)で拡張されます。

CommonAdapterSchemaPageクラス拡張では、getIntroPrompt()を実装して、ページ上部の導入テキストを変更することのみが必要です。

この例は、oracle.tip.tools.ide.pm.wizard.adapter.custom.CustomSchemaPageを参照してください。

CommonAdapterInOutSchemaPageには、オーバーライド可能なパブリック・メソッドがいくつか含まれています。次の表を参照してください。

表3-3 CommonAdapterInOutSchemaPageのパブリック・メソッド

メソッド

説明

getIntroPrompt()

ページ上部の導入テキストを変更します。

getInboundSchemaLabel()

インバウンド・スキーマ・パネルのラベルを設定します。

getOutboundSchemaLabel()

アウトバウンド・スキーマ・パネルのラベルを設定します。

changeSequenceOfInOutSchemaPanels()

インバウンド・パネルおよびアウトバウンド・パネルの表示順を変更します。デフォルトの表示では、インバウンド・スキーマ・パネルが先です。

setInOutSchemaPanelVisibility()

スキーマ・パネルの表示を設定または設定解除します。

この例は、oracle.tip.tools.ide.pm.wizard.adapter.mq.MQAdapterInOutSchemaPageを参照してください。

3.1.11 「終了」ページの追加

ウィザードで「終了」ページが表示されるときに「終了」ボタンが表示されるようにするのではなく、ウィザード・フローの早い段階でウィザードに「終了」ページを追加する必要があります。「終了」ページには、まだ表示されていない他のページで必要なサマリー情報が表示されます。

このようなページの優先順位を指定できるように、techAdapterWizardPageに2つのヘルパー・メソッドaddFinishPage()およびsetFinishPageContents()が用意されています。

- addFinishPage()では、コンテンツのない終了ページがウィザードに追加されます。ほとんどのウィザードでは、ページの削除または追加の際に「終了」ページが追加されます。

- setFinishPageContents(String title, Object contents)では、ユーザーがウィザードの最後のページで「次へ」ボタンを選択したときに、setFinishPageContentsが(wizardValidatePage()から)呼び出されます。

「終了」ページのコンテンツとして、コンポーネントまたは文字列を指定できます。「終了」ページのコンテンツを文字列に設定すると、MultiLineLabelが自動的に作成されます。

3.1.12 終了後処理の実行(オプション)

各アダプタでは、JcaAdapterWizard拡張クラスのgetAdapterWizardFinish()メソッドをオーバーライドすることによって、AdapterWizardFinishInterfaceの実装を登録できます。これによって、アダプタで、終了時に追加のアクティビティを実行できるようになります。

たとえば、ファイル・アダプタでは、この終了処理のオーバーライドを使用して、FileAdapterHeaderスキーマが現行プロジェクトであるかどうかを確認し、このスキーマが現行プロジェクトでない場合は、ファイル・アダプタでヘッダー・ファイルがプロジェクト・ディレクトリにコピーされるように設定できます。

AdapterWizardFinishInterfaceには、アダプタのアーティファクト(WSDLファイルおよび.jcaファイル)の作成前と作成後のいずれかに制御を得る次の2つのメソッドが含まれます。

- beforeWSDL()メソッドは、falseを返し、アダプタのアーティファクトを作成してはいけないことを示します。

- afterWSDL()メソッドは、WSDLファイルの作成後に呼び出されます。

これらのメソッドはどちらも、実装で必要に応じて使用できます。

3.1.13 sca-config.xmlへのAdapterType要素の追加

次の要素は、sca-config.xmlに追加され、カスタム・アダプタで使用するアイコンとSCAEndpoint実装クラスについてSOAダイアグラムに通知して、追加情報を提供します。サブ要素の定義として、次のものがあります。

- name: リソース・バンドルから取得されます。

- description: リソース・バンドルから取得されます。

- tooltip: リソース・バンドルから取得されます(グラフィックでマウス・カーソルの下に表示されます)。

- icon16x16: パレットで使用されるアイコン。

- icon20x20: グラフィックで使用されるアイコン。

- 他の4つのアイコンは使用されません。

<adapterType
resourceBundle="oracle.tip.tools.ide.pm.modules.biz
integration.adapter.custom.resource.CustomStringResourceBundle">
<name>${CUSTOM_ADAPTER_COMPONENT_NAME_L}</name>
<bindingType>jca</bindingType>
<bindingSubType>custom</bindingSubType
<implementationClass>oracle.tip.tools.ide.pm.modules.bizintegration.adapter.custom.CustomScaEndpointImpl</implementationClass>
<description>${CUSTOM_ADAPTER_COMPONENT_DESC}</description>
<tooltip>${CUSTOM_ADAPTER_COMPONENT_DESC}</tooltip>
<icon16x16>/oracle/tip/tools/ide/pm/modules/bizintegration/adapter/custom/resource/custom_adapter_16x16.png</icon16x16>
<icon20x20>/oracle/tip/tools/ide/pm/modules/bizintegration/adapter/custom/resource/custom_adapter_20x20.png</icon20x20>
<topSectionIcon>oracle/tip/tools/ide/fabric/resource/image/visuals_rd1/whiteServiceTop.png</topSectionIcon>
<middleSectionIcon>oracle/tip/tools/ide/fabric/resource/image/visuals_rd1/whiteServiceMiddle.png</middleSectionIcon>
<bottomSectionIcon>oracle/tip/tools/ide/fabric/resource/image/visuals_rd1/whiteServiceBottom.png</bottomSectionIcon>
<collapsedSectionIcon>oracle/tip/tools/ide/fabric/
resource/image/visuals_rd1/whiteServiceCollapsed.png</collapsedSectionIcon>
</adapterType>
<collapsedSectionIcon>oracle/tip/tools/ide/fabric/resource/image/
visuals_rd1/whiteServiceCollapsed.png</collapsedSectionIcon>
</adapterType>

sca-config.xmlの<adapterType>には、リソース・バンドルのクラス名を格納する必要のあるリソース・バンドル属性が含まれます。このリソース・バンドルは、SOAダイアグラマで、ダイアグラムのエンドポイントのラベル付けに使用する変換済テキストの取得に使用されます。

たとえば、カスタム・アダプタのエントリを参照する場合、ダイアグラムにカスタム・アダプタを表示する際に、ダイアグラムではCustomStringResourceBundleでCUSTOM_ADAPTER_COMPONENT_NAME_Lが検索されます。

アダプタ・ウィザードの内部で、ダイアグラムではリソース・バンドルを使用して、ウィザード内のすべてのラベルのテキストが取得されます。カスタム・アダプタの場合、同じバンドルが使用されます。

3.1.14 パブリック・ユーティリティ・メソッドの使用

このSDKのクラスには、アダプタ・ウィザード全体を通して使用されているユーティリティ・メソッドが含まれています。次の表は、これらのメソッドを示しています。

メソッド

注意

oracle.tip.tools.ide.adapters.designtime. adapter.jca.JcaUtil:

getAdapterWsdlInfo (AdapterWizardContext_wcontext)

複数のフレーバを使用できます。

initContextFromWsdlAndModel(Project project,JcaAdapterContext jcaAdapterContext,WsdlInfo wsdlInfo, JcaDataInterface jdata)

initContextFromWSDLMultiOper(JcaAdapterContext jcaAdapterContext, JcaDataInterface jdata)

Definition readAdapterWsdl(WSDLFactory wfact, URL wsdlLocation)

oracle.tip.tools.ide.adapters.designtime.adapter.CommonAdapterSchemaPage:buildOpaqueSchema(AdapterWizardContext _wcontext, Definition def1)removeOldSchema(AdapterWizardContext wcontext, String schemaLoc,String schemaNamespace)

一方向操作の定義オブジェクトからスキーマを削除します。

removeOldSchema(AdapterWizardContext wcontext, boolean oneway, boolean isCallback)

リクエスト/リプライ操作の定義オブジェクトから入力/出力スキーマを削除します。

4 Fusion Middlewareとの統合に向けたアダプタ・ランタイム・コンポーネントの開発

この章では、Fusion Middlewareとの統合に向けたアダプタ・ランタイム・コンポーネントの開発プロセスについて説明します。

アダプタ・ランタイム・コンポーネントの開発には、複数の設計および接続構成手順が関係しています。

これには次のものがあります。

- 設計全体の理解

- 接続構成

- 実行時インタフェースおよび規定

- WebLogic JCAリソース・アーカイブRARの作成

- WebLogicアプリケーション・サーバーへのRARファイルのデプロイ

- カスタム・アダプタのテスト

4.1 設計全体の理解

Oracle JCA Frameworkは、J2EE Java Connector Architectureバージョン1.5に準拠したアダプタにプラガビリティをもたらします。つまり、Oracle JCA Frameworkで使用するアダプタではすべて、JCA 1.5の仕様に記載された要件を満たす必要があります(『JSR-112, J2EE Connector Architecture 1.5 - Final Release』も参照してください)。

注意:

Oracle JCA Frameworkでは、軽量JCA 1.5コンテナが実装されます。このコンテナでは、インバウンド・エンドポイント(アクティブ化)の動的(コード駆動)デプロイメントが可能になります。これは、JCA 1.5トランザクション・インフローのサポート(つまり、XATerminatorのサポート)を除外することにおいて、小さな短所となっています。

4.2 接続構成

Oracle JCA Frameworkには、J2EE 1.4またはこれ以降に準拠したアプリケーション・サーバー(Oracle WebLogic Serverなど)でデプロイ可能なJCAアダプタが必要です。このため、Oracle JCA Frameworkで使用するすべてのJCAアダプタで、すべての関連JCA SPI(サービス・プロバイダ)およびCCI(共通クライアント)インタフェースをJCA 1.5の仕様で必須とされているとおりに実装する必要があります。主なインタフェースは次のとおりです。

- javax.resource.spi.ManagedConnectionFactory

- javax.resource.cci.ConnectionFactory

- javax.resource.spi.ManagedConnection

- javax.resource.cci.Connection

JCAアダプタでは、必要な接続プロパティをManagedConnectionFactoryで定義して、EIS(企業情報システム、つまりバックエンド)への機能接続を確立する必要があります。

Oracle JCA FrameworkでManagedConnectionFactoryを使用すると、デプロイ済JCAアダプタ経由で接続を取得できるようになります。次に、コード例を示します。

ConnectionFactory cf = initialContext.lookup("eis/Siebel/SiebelApp1-Connection");

Connection c = cf.getConnection();

すべての接続プロパティは、ConnectionFactoryインスタンスに含まれるJNDIルックアップを使用して取得されます。

4.3 実行時インタフェースおよび規定

アダプタは、Oracle JCA Frameworkと正常に相互に作用するように、特定のインタフェースおよび規定に準拠する必要があります。主として、JCAアダプタでは少なくとも、次のインタフェースを実装する必要があります。

- javax.resource.spi.ResourceAdapter

- javax.resource.spi.ActivationSpec

- javax.resource.spi.work.Work

- javax.resource.cci.Interaction

- javax.resource.cci.InteractionSpec

これらのSPIインタフェースは、インバウンド・メッセージ・フローを有効にするために実装する必要があり、CCIインタフェースは、アウトバウンド相互作用を有効にするために実装する必要があります。インバウンド・インタフェースは、次の「インバウンド」を参照してください。

4.3.1 インバウンド

J2EE Java Connector Architectureバージョン1.5は、トランザクションの観点から(つまり、アダプタでトランザクション・セマンティクスがサポートされる場合に)明確に定義された方法で、J2EEアプリケーション・サーバーで管理されているエンドポイントに、アダプタからメッセージを非同期にプッシュできるようするインタフェースを提供します。

Oracle JCA Frameworkでは、これらのエンドポイントは、アダプタ・フレームワークで管理されます。

4.3.2 JCA 1.5の規定およびインタフェース

次の各項で、Oracle Fusion Middlewareへのデプロイを可能にするためにJCA 1.5準拠のリソース・アダプタで実装する必要がある各サービス・プロバイダ・インタフェース(SPI)について説明します。

4.3.2.1 Interfacejavax.resource.spi.ResourceAdapter

各JCAアダプタにこのインタフェースを実装する必要があります。アダプタ・フレームワークでは、このインタフェースのアダプタでの実装がシングルトンとして扱われます。つまり、Java仮想マシンごとにこのインタフェースの実装のインスタンスは多くても1つだけ存在することになります。

アダプタが(特定のJVMの)いずれのビジネス・プロセスでも使用されない場合は、そのアダプタでのResourceAdapterの実装はインスタンス化されません。

4.3.2.2 インスタンス化

ResourceAdapterの実装は、対象のアダプタを使用する最初のコンポジット・アプリケーションの開始時にインスタンス化されます。

その後、同じアダプタを使用する他のコンポジットを開始した場合、追加のResourceAdapterインスタンスが作成されることはありませんが、最初の(シングルトン)インスタンスへのハンドルが取得されます。

ResourceAdapterインスタンスの作成直後に、次のメソッドが呼び出されます。

public void start(BootstrapContext ctx)
throws ResourceAdapterInternalException

アダプタでは、BootstrapContextをキャッシュする必要があります。これには、インバウンド・エンドポイント相互作用の作成およびスケジューリングに必要なファシリティが含まれるためです。

BootstrapContextにも、ロギング・サービス・ハンドルが含まれます。リソース・アダプタでこのハンドルをキャッシュして、インバウンド・メッセージ・フローをサポートするすべてのクラス(つまりjavax.resource.spi.*の下に提供されるクラス)で使用する必要があります。

アウトバウンドでは、ロギング・サービス・ハンドルは、ConnectionFactoryを通して使用できます。

4.3.2.2.1 stopメソッドおよびエンドポイント・アクティブ化

stopメソッドは、アプリケーション・サーバーの停止時、またはアダプタを参照する最後のコンポジットの終了時に、リソース・インスタンスがアンデプロイされたときに呼び出されます。

public void stop()

アクティブなエンドポイントが存在する場合、サーバーまたはコンポジットの停止時にアダプタ・フレームワークによって呼び出されたstop()メソッドから値が返される前に、これらのエンドポイントを非アクティブ化する必要があります。

その他の割当て済リソースも同様にすぐにリリースする必要があります。

public void endpointActivation(MessageEndpointFactory endpointFactory,
ActivationSpec spec)

メッセージ・エンドポイントのアクティブ化の際に、エンドポイント・アクティブ化が呼び出されます。

JCAベースの開始または非開始サービス・エントリ・ポイント(つまり、<service>でbinding.jcaを使用するエントリ・ポイント)が含まれる各コンポジットでは、.jcaプロパティ・ファイルのコネクション・ファクトリJNDIによって参照されるResourceAdapterの関連(インバウンド)操作ごとに、endpointActivation()の呼出しが発生します。

4.3.2.2.1.1 コネクション・ファクトリ、作業リクエスト、エンドポイント非アクティブ化

アダプタ・フレームワークでは、.jcaプロパティ・ファイルの<connection-factory>要素に定義されているとおりに、MessageEndpointFactoryを使用して、ConnectionFactoryのインスタンスが指定されます。このインスタンスをリソース・アダプタで使用して接続を作成できます。

javax.resource.cci.ConnectionFactory connectionFactory =
((ConnectionFactoryAssociation)activationSpec).getConnectionFactory();
javax.resource.cci.Connection connection = connectionFactory.getConnection();

この呼出し時に、リソース・アダプタでは、MessageEndpointFactoryを使用して、インバウンド・エンドポイントを作成し、インバウンドEISエンドポイントを監視するインバウンド・スレッドを構成する作業リクエストを発行する必要があります。

ResourceAdapterInboundWorkerThread workRequest =
new ResourceAdapterInboundWorkerThread(endpoint, activationSpec, connection);
workManager.startWork(workRequest);

ここで、ResourceAdapterInboundWorkerThreadは、リソース・アダプタでのjavax.resource.spi.work.Workの実装です。

startWork()から値が返されたらすぐに、アダプタ・フレームワークは、run()メソッドを呼び出すことによって、発行したworkRequestにスレッドを割り当てます。

次のメソッドendpointDeactivationは、メッセージ・エンドポイントが非アクティブ化された際、つまり、そのエンドポイントをアクティブ化したコンポジットの停止時またはアプリケーション・サーバーの停止時に、アダプタ・フレームワークによって呼び出されます。

public void endpointDeactivation(MessageEndpointFactory
endpointFactory, ActivationSpec spec)

注意:
カスタム・アダプタがOracle Weblogic環境で動作するためには、カスタム・アダプタのコネクション・ファクトリがoracle.tip.adapter.api.OracleConnectionFactoryを実装する必要があります。カスタム・アダプタのコネクション・ファクトリがoracle.tip.adapter.api.OracleConnectionFactoryを実装する必要がある場合、JDeveloperによって生成される.jcaの<connection-factory>に<resource-adapter>要素を追加します。次に例を示します。

<connection-factory location="eis/Custom/CustomAdapter"/>
<resource-adapter className="com.custom.oracle.fusion.adapter.CustomAdapter"/>
</connection-factory>

4.3.3 Interfacejavax.resource.spi.work.Work

Workインタフェースは、次のとおりです。

public interface Work extends Runnable

Oracle SOAを使用してデプロイしたJCA 1.5準拠のリソース・アダプタは、管理対象モード(つまり、 J2EEコンテナ内)で実行されるため、独自にスレッドを作成することはできません。このため、アダプタは、かわりにWebLogicアプリケーション・サーバーに依存して、スレッドの作成と開始を行う必要があります。

スレッド(たとえば、インバウンド・エンドポイントのポーリングに使用するスレッド)を取得するには、アダプタは、Workインタフェースを実装するクラスのインスタンスをWorkManager(これを受けてBootstrapContextを使用して取得される)に発行する必要があります。

アダプタでは、これはrunメソッドを使用して実行されます。

public void run()

このメソッドは、新規に割り当てられたJ2EE準拠のスレッドを使用して、WorkManagerによって呼び出されます。リソース・アダプタでは、停止を選択するまで(たとえば、リカバリ不能なエラー状態など。ただし、この規則はお薦めしません)、またはより適切な、アダプタが停止のシグナルを受けるまで(release()メソッドによって)、このスレッドを使用できます。

public void release()

アダプタ自体は、アダプタ・フレームワークによって実行されたendpointDeactivationの呼出しを処理する際に、release()を呼び出します。

このアクティビティは、現在Workインスタンスを実行しているスレッド、つまりendpointActivationを呼び出しているシステム・スレッドとは別のスレッドで呼び出されます。

リソース・アダプタで、release()の呼出し後に事前設定されている時間が経過した後に、run()メソッドが終了されない場合、アダプタ・フレームワークでは、スレッドの強制的な停止が試行されます。

4.3.4 Interfacejavax.resource.spi.work.WorkManager

Oracle SOAでは、WorkManagerインタフェースの実装は、アダプタ・フレームワークによって行われます。実装は最小限です。これは、アダプタ・フレームワークでは、拡張スレッド・プーリングや高度なスケジューリングがサポートされないためです。

かわりに、アダプタ・フレームワークでは、6つのパブリック・メソッドのうち1つのメソッドscheduleWork(Work work)のみが実装されます。その他のパブリック・メソッドは、このメソッドにリダイレクトされます。つまり、呼出しのブロッキングはサポートされていません(この例として、呼出しのブロッキングはdoWork()に必要です)。

アダプタ・フレームワークでは、SOAのデフォルトのワーク・マネージャを使用して、完了したWorkインスタンスから解放されたスレッドをWorkの新規発行で再使用できるようにします。

次のメソッドでは、Workインスタンスが処理に向けて受け入れられます。

public void scheduleWork(Work work)

throws WorkException

この呼出しはブロックされず、Workインスタンスが処理に向けて受け入れられるとすぐに値が返されます。発行されたWorkインスタンスでいつ実行が開始されるかの保証はありません。つまり、実行の開始に時間の制約はありません。

4.3.5 アウトバウンドにおける考慮事項

アウトバウンドおよびインバウンドのシナリオでは、リソース・マネージャはJCA 1.0の仕様に定義されている標準の規定に準拠する必要があります。

アウトバウンドのシナリオでは、アダプタの実行時定義を指定する際に、次の要件を満たす必要があります。

- リソース・アダプタのManagedConnectionFactoryで、接続関連のパラメータをすべて定義する必要があります。これによって単にOracle SOAランタイムが実行可能になります。次に例を示します。

ConnectionFactory cciConnectionFactory =
initialContext.lookup("eis/sample/...");
Connection cciConnection = cciConnectionFactory.getConnection();

- InteractionSpec実装の標準のInteractionSpecパラメータはすべて、String、int、boolean、short、long、floatおよびdoubleのうちのいずれかの引数タイプを使用して、1つの引数ミューテータ・メソッドによって構成する必要があります。

- リソース・アダプタは、管理対象環境で機能できることが必要です。このため、リソース・アダプタは、J2EEアプリケーション・サーバーにデプロイ可能である必要があります。

4.3.6 変換サービス・インタフェース

変換サービス・インタフェースでは、メッセージとネイティブ・フォーマットとの間の変換が処理されます。アダプタ・フレームワークでは、指定のWSDLバインディング操作のInteractionSpecまたはActivationSpecをインスペクトすることによって、操作関連メッセージのネイティブ・フォーマットへの、またはネイティブ・フォーマットからの変換における要件が判別されます。

示された仕様のいずれかで、変換マーカー・インタフェースTranslationAwareが実装されると、アダプタ・フレームワークでは、WSDLのtypesセクションから対応するXSDElementが指定され、これによって入力メッセージ・タイプが定義されます。

具体的には、アダプタ・フレームワークでは、次のステップが実行されます。

jcaInteractionSpec=(InteractionSpec)
Class.forName(_interactionSpecName).newInstance();
if (jcaInteractionSpec instanceof TranslationAware)
{
oracle.xml.parser.schema.XMLSchema nXsdSchemaRoot =
getInputMessageSchemaElement();
((TranslationAware)jcaInteractionSpec).
setNXSDSchemaRoot(nXsdSchemaRoot);
}
jcaInteraction.execute(jcaInteractionSpec, ...

4.4 WebLogic JCAリソース・アーカイブRARの作成

WebLogicアプリケーション・サーバーにJCAアダプタをデプロイするには、ユーザーは次のプロパティを定義するデプロイメント・ディスクリプタ・ファイルを作成する必要があります。

- 表示名

- アダプタ・ベンダー

- EIS/バックエンド・タイプ

- バージョン番号

- javax.resource.spi.ManagedConnectionFactoryのアダプタ実装のクラス名

- javax.resource.cci.ConnectionFactoryのアダプタ実装のクラス名

- javax.resource.cci.Connectionのアダプタ実装のクラス名

- ManagedConnectionFactory実装で公開されるすべてのBeanプロパティの名前

デプロイメント・ディスクリプタでは、<outbound-resourceadapter>のインスタンスが定義されるのみです。これは、インバウンドJCAラインタイム・コンテナはOracle WebLogic Serverではなく、Oracle JCA Frameworkによって直接管理されるためです。

デプロイメント・ディスクリプタ・ファイル(ra.xml)をRARファイル(リソース・アーカイブ)にアーカイブする必要があります。RARファイルは、WebLogic Serverコンソールまたはスクリプトを使用してデプロイできます。

ユーザーがデプロイするRARファイルには、次の構造が必要です。

/META-INF/ra.xml
/adapter.jar
/dependencies.jar

adapter.jarファイルには、JCAアダプタの実装が含まれ、dependencies.jarには、WebLogicアプリケーション・サーバーによって暗黙的には提供されないすべての依存Javaライブラリが含まれます。

これらの構成ファイルが前述のディレクトリ構造に配置されると、次のコマンドを使用してRARファイルを作成できます。

$ jar cf myAdapter.rar META-INF/ra.xml adapter.jar dependencies.jar

プロジェクトのコンパイルに必要なjarファイルのリストは、付録を参照してください。

4.5 WebLogicアプリケーション・サーバーへのRARファイルのデプロイ

アダプタのリソース・アーカイブを作成したら、ユーザーは、WLS管理コンソールの「デプロイメント」セクションまたはWLSTツール(http://docs.oracle.com/cd/E13222_01/wls/docs90/config_scripting/reference.html#1024285を参照)を使用して、WebLogicアプリケーション・サーバーにアダプタをデプロイする必要があります。

RARファイルをWebLogic Serverドメイン・ディレクトリの下のautodeployディレクトリに直接コピーすることもできます。ここでは、RARファイルは自動的にデプロイされます。

RARをデプロイすると、ユーザーは、WebLogic Server管理コンソールの「デプロイメント」セクションの下に接続ファクトリを作成できます。例として、アウトバウンド接続プール構成表を使用している、次のスクリーンショットを参照してください。

図4-1 WebLogic Server管理コンソールを使用した接続ファクトリの作成

4.6 カスタム・アダプタのテスト

カスタム・アダプタのテストに関する情報は、このドキュメントで後述のサンプルの項を参照してください。

5 カスタム・アダプタのOracle JDeveloperでの使用可能化

この章では、開発されたカスタム・アダプタをOracle JDeveloperで使用可能にする方法について説明します。

Oracle SOA Suiteのインストール時に、現在のリリースでは、カスタム・アダプタは、デフォルトで使用可能にはなっていません。カスタム・アダプタをJDeveloperで使用可能にする手順は次のとおりです。

1. \soa\plugins\jdeveloper\extensions\oracle.sca.ui.adapters.jarに移動します。

2. META-INF/extension.xmlファイルを開いてカスタム・アダプタを探します。

3. エントリを非コメント化して、extension.xml をoracle.sca.ui.adapters.jarに保存します。

4. JDeveloperを再起動します。
そうすると、次のスクリーンショットのように、JDeveloperのSOAダイアグラムの「コンポーネント・パレット」にカスタム・アダプタが表示されます。

図5-1 JDEVの「コンポーネント・パレット」リストに表示されたカスタムJCAアダプタ

The <JDEV_HOME>\jdeveloper\integration\seed\ soa\configuration\customAdapter-config.xml ファイルには、詳細なオプション(connection-factory location、interaction-spec className、activation-spec className、プロパティなど)が含まれています。

ファイルのactivation-specの下に指定されるプロパティは、インバウンド・アダプタ用のプロパティです。

同様に、ファイルのinteraction-specの下に指定されるプロパティは、アウトバウンド・アダプタ用のプロパティです。

プロパティの値はカスタム・アダプタによって表示されたデフォルト値です。

ユーザーは、カスタム・アダプタで必要なオプションに適合するように、customAdapter-config.xmlのコンテンツを変更する必要があります。たとえば、ユーザーは、すべてのプロパティ名やデフォルト値の変更、新しいプロパティの追加、複数のアクティブ化仕様と相互作用仕様の追加などを行うことができます。

displayResourceKeyおよびresourceBundle属性はオプションです。activation-spec、interaction-spec、またはproperty要素にdisplayResourceKeyが含まれている場合、属性値はリソース・バンドルから表示可能なテキストを取得するキーとして使用されます。

リソース・バンドルが使用できない場合やバンドルにキーがない場合は、キー自体が表示可能なテキストとして使用されます(キーにリソース・バンドルを含める必要がないため)。

ただし、resourceBundle属性をconnection-factory要素に配置することによって、リソース・バンドルを使用できます。

スクリーンショットで使用されているサンプルのcustomAdapter-config.xmlファイルのコンテンツは、次のとおりです。

<adapter-config
xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
<connection-factory location="eis/Custom/CustomAdapter"
resourceBundle="oracle.tip.tools.ide.pm.modules.bizintegration.adapter.
custom.resource.CustomStringResourceBundle"/>
<endpoint-interaction >
<interaction-spec
className="oracle.tip.adapter.custom.outbound.CustomInteractionSpec"
displayResourceKey="CustomInteractionSpec" >
<property name="PropX" value="x" displayResourceKey="SAMP_PROP_X" />
<property name="PropY" value="y" displayResourceKey="Sample Property Y"/>
<property name="Append" value="false"/>
<property name="NumberMessages" value="1"/>
</interaction-spec>
</endpoint-interaction>
<endpoint-interaction >
<activation-spec
className="oracle.tip.adapter.custom.inbound.CustomActivationSpec"
displayResourceKey="CustomActivationSpec">
<property name="UseHeaders" value="false"/>
<property name="PhysicalDirectory" value="x"/>
<property name="Recursive" value="true"/>
<property name="DeleteFile" value="true"/>
<property name="IncludeFiles" value="x"/>
<property name="PollingFrequency" value="60"/>
<property name="MinimumAge" value="0"/>
</activation-spec>
</endpoint-activation>
</adapter-config>

6 カスタム・アダプタのSDK開発のサンプル

この章では、カスタム・アダプタのSDKデプロイメントのサンプルを示します。

アダプタのSDK開発の理解に役立つサンプルのソース・コード、ビルド・スクリプトおよびコンポジット・アプリケーションが用意されています。

6.1 ソース・コード

カスタム・アダプタのコードおよびビルド・スクリプトは、単純だが機能的なアダプタ向けであり、次のURLから取得することも、SOAインストールのJDeveloperディレクトリ<JAVA_HOME>/developer/integration/adapters/samples/customから取得することもできます

http://java.net/projects/oraclesoasuite11g/downloads/download/Adapters/Custom/runtime-sdk.zip

6.2 SCAコンポジット・アプリケーションのサンプル

SCAコンポジット・アプリケーションは、カスタム・アダプタの機能を詳細にテストするテスト・シナリオの設計に役立ちます。

カスタム・アダプタで、インバウンドとアウトバウンドの両方の機能を提供する場合は、テスト・コンポジットでインバウンドおよびアウトバウンド(つまりエンドツーエンド)のシナリオにそのアダプタを採用できます。

カスタム・アダプタが一方向(たとえば、アウトバウンドのみ)の場合は、SOAテスト・コンソールを使用してSOAPエントリ・ポイント経由でテスト・コンポジットをトリガーできます。

http://java.net/projects/oraclesoasuite11g/downloads/download/Adapters/Custom/sca_project.zip

7 ビルドに必要なJARファイルのリスト

この項では、ビルドに必要なjarファイルのリストを示します。

ビルドに必要なjarファイルの包括的なリストを次に示します。

- oracle.sca.ui.adapters.jar

- xbean.jar

- adapter_xbeans.jar/jdeveloper/ide/extensionsにあるoracle.ide.jar

- oracle_common\modules\oracle.javatools_11.1.1にあるjavatools-nodeps.jar

- modulesにあるcom.oracle.ws.orawsdl_1.3.0.0.jar

- jdeveloper/jlibにあるjewt4.jar

- jdeveloper/jdev/extensionsにあるoracle.sca.modeler.jar

- oracle_common/modules/oracle.bali.share_11.1.1にあるshare.jar

- developer/integration/libにあるbmp-ide-common.jar

- jdeveloper/ide/libにあるjavatools.jar

- jdeveloper/jdev/extensionsにあるoracle.jdevimpl.wsdl.jar

オラクルの法律上の注意点について

コピーライトについて

Copyright © 1994-2016, Oracle and/or its affiliates.All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

アルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のアルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが非公開の試作版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のベータ・トライアル契約のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle PartnerNetwork Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティについて

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。