Oracle Application Server CDC Adapters for IMS/DBユーザーズ・ガイド 10g リリース3(10.1.3.4) B53284-01 |
|
戻る |
次へ |
OracleAS CDC Adapters for IMS/DBをOracle BPEL Process Managerにデプロイして統合するには、BPEL Process Managerを構成する必要があります。
この章の内容は、次のとおりです。
Oracle BPEL Process Managerには、BPELビジネス・プロセスを作成、デプロイおよび管理するための包括的なソリューションが用意されています。Oracle BPEL Process Managerはサービス指向アーキテクチャ(SOA)に基づいており、これにより企業のWebサービスおよびビジネス・プロセスに柔軟性、相互運用性、再利用性、拡張性、迅速な実装がもたらされます。Oracle BPEL Process Managerによって、既存のビジネス・プロセスの管理、変更、拡張、再デプロイメントにかかる全体的なコストが削減されます。各ビジネス・アクティビティは独立し、相互に依存せず、モジュール化されたアプリケーションであり、そのインタフェースはWSDLを使用して定義されます。また、ビジネス・プロセスはWebサービスとしてモデル化されます。
Webサービスは、まず公開されてから、ビジネス・フローに構成または編成されます。サービスの公開は、既存のアプリケーションまたはシステム内の関数を取り出して、標準的な方法で利用可能にすることによって実装されます。編成は、複数のサービスをエンドツーエンドのビジネス・プロセスに構成することによって実装されます。 OracleAS CDC Adapter for IMS/DBの構成の一部として定義されているCDCソリューションは、パートナ・リンクとして編成に統合されます。各パートナ・リンクは、CDC表を記述するWSDLにリンクされています。
OC4Jアプリケーション・サーバーまたはWebLogicアプリケーション・サーバーを使用して、Oracle Connectレガシー・アダプタをデプロイできます。この項では、レガシー・アダプタをデプロイする方法、必要な接続を設定する方法およびCDCストリーム位置表を構築する方法について説明します。
この章の内容は、次のとおりです。
各CDCインバウンド・プロセスは、1つのソース表に対してのみ定義されています。CDCアダプタごとに1つのCDCストリーム位置表を作成します。CDCストリーム位置表には、プロセス(表)ごとに、そのストリーム位置とXAトランザクションを制御するための行が1行含まれています。表の定義には、次のSQL文が使用されます。
create table CDC_STREAM_POSITIONS(TABLE_NAME varchar(127) not null, STREAM_POSITION varchar(127), PREPARED_STREAM_POSITION varchar(127), ROLLBACK_STREAM_POSITION varchar(127), NEW_STREAM_POSITION varchar(127), XID_FORMAT int, XID_BRANCH varchar(128), XID_GLOBAL varchar(128));create unique index CDC_STREAM_POSITIONS_INDEX on CDC_STREAM_POSITIONS (TABLE_NAME);
表の名前を変更することはできますが、列名は変更できません。
次の表に、CDCストリーム位置表の列を示します。
表4-1 CDCストリーム位置表
列 | 説明 |
---|---|
|
インバウンド・プロセスのCDC表の名前。 この列のデータは変更しないでください。 |
|
現在の表のCDCプロセスで最後にコミットされたストリーム位置。 この列のデータは変更しないでください。 |
|
現在の表のCDCプロセスで最後に準備されたストリーム位置。 この列のデータは変更しないでください。 |
ロールバック・ループの場合、この列には、ロールバック時に発生したイベントのストリーム位置が含まれています。 |
|
|
この列に有効なストリーム位置の値を入力して、現在のストリーム位置を手動で変更できます。この列を更新する前に、対応するCDCプロセスを非アクティブ化してください。 注意: XID_FORMAT列がNULL値であることを確認してください。 |
|
最後に準備されたXIDフィールド。 |
アプリケーション・サーバーで、CDCストリーム位置表を含むネイティブ・データソースを構成する必要があります。次に、OC4Jにおけるdata-sources.xml
ファイル内のデータソース定義の例を示します。
<native-data-source name="CdcContextOracleDS" jndi-name="jdbc/CdcContextOracleDS" description="Native CDC Context DataSource" data-source-class="oracle.jdbc.pool.OracleDataSource" user="system" password="manager" url="jdbc:oracle:thin:@//server1-xp:2551/ora10202"></native-data-source>
Oracle Connectレガシー・アダプタのRARをjca-legacy-adapter
という名前でOC4JサーバーまたはWebLogicサーバーにデプロイします。
OC4Jアプリケーション・サーバーまたはWebLogicアプリケーション・サーバーで、適切なコネクション・ファクトリを作成します。
次の表に、コネクション・ファクトリのプロパティの説明を示します。
表4-2 CDCインバウンド・プロセスの接続プロパティ
プロパティ | 説明 |
---|---|
|
必須。使用するアダプタの名前を設定します。アダプタは、Oracle Studioを使用してOracle Connectサーバーに定義します。 |
|
必須。Oracle Connectデーモンが実行されているサーバーの名前をTCP/IPアドレスまたはホスト名で入力します。デーモンの詳細は、「デーモンの高度なチューニング」も参照してください。 |
|
必須。使用するOracle Connectサーバー・ワークスペースの名前を指定します。ワークスペースの詳細は、「ワークスペース」も参照してください。 |
|
オプション。サーバー上でOracle Connectデーモンが実行されているTCP/IPポートを指定します。デフォルト・ポートは |
|
オプション。Oracle Connectサーバーにアクセス可能なユーザーを指定します。ユーザーは、Oracle Connectデーモン構成で定義されます。Oracle Connectサーバーへのアクセスを許可されるユーザーの詳細は、デーモンの「セキュリティ」およびワークスペースの「セキュリティ」も参照してください。 |
|
オプション。ユーザーの有効なパスワードを指定します。 |
|
デフォルトでは、 |
|
デフォルトでは、 |
|
オプション。使用するファイアウォール・プロトコルを |
|
オプション。接続タイムアウトを秒単位で指定します。デフォルトは0であり、接続タイムアウトがないことを示しています。 |
|
オプション。使用する暗号化プロトコルの名前を設定します。デフォルトでは、 |
|
オプション。使用する対称暗号化キーの名前を指定します。 |
|
オプション。使用する対称暗号化キーの値を指定します。 |
|
デフォルトでは、 |
|
デフォルトでは、 |
|
オプション。リソース・アダプタが、サーバーでイベントが検出されない場合に次のリクエストを発行するまで待機する時間を指定します。デフォルト値は |
|
必須。cdcStreamPositionsTableを含むJDBCネイティブ・データソースのJNDI名。 |
CDCインバウンド・プロセスを制御するために使用されるSQL表。詳細は、「CDCストリーム位置表の定義」を参照してください。 |
この章の内容は、次のとおりです。
Oracle Connectサーバーへの接続を設定して、JDeveloperによってビルドされる自動BPELアプリケーションを準備するには、次の手順を実行します。
「Oracle BPEL Admin」ウィンドウを開きます。
「サーバー」タブの「構成」タブで、次の項目を指定します。
LegacyServer
: Oracle ConnectがインストールされているサーバーのIPアドレス。
LegacyPort
: Oracle Connectがインストールされているサーバーのポート番号。
Oracle BPEL Process Managerによって使用される各Oracle Connectサーバーについて、前述の手順を繰り返します。異なるサーバーとポートの組合せは、カンマを使用して区切ります。
「適用」をクリックします。
Oracle SOA Suiteを再起動します。
次の項では、CDCインバウンド・プロセスをインバウンド・アプリケーションに統合する方法について説明します。
CDCアダプタ・パートナ・リンクを構成するには、Oracle JDeveloperで次の手順を実行します。
ビジュアル・エディタの「サービス」レーンの1つにパートナ・リンクをドラッグします。
「パートナ・リンクの作成」ダイアログ・ボックスで、「サービス・エクスプローラ」ボタン(「WSDL設定」の下にある2番目のボタン)をクリックします。
サービス・エクスプローラで、「アダプタ・サービス」を開きます。
IMS/DBリソース・アダプタをデプロイした接続サーバーを開きます(CDCソリューションを作成したサーバーです)。
「アダプタ」で「レガシー」を開いて、「Oracle BPEL Admin」ウィンドウを使用して定義したOracle Connectサーバーのリストを表示します。
チェックするメタデータを持つOracle Connectサーバーを開いて、ワークスペースのリストを表示します。
作成したCDCステージング領域ワークスペースを開きます。このワークスペースの名前には、接尾辞_sa
が付いています。
CDCキュー・アダプタを開いて、取得された表のリストを表示します。
作業対象の表を選択して、「OK」をクリックします。
「パートナ・ロール」および「マイ・ロール」を定義して、「OK」をクリックします。
インバウンド・パートナ・リンクを構築すると、取得された表に対応するWSDLがOracle BPEL Process Managerによって自動的に作成されます。作成されるWSDLには、AttuCDCActivationSpec
クラスのプロパティも含まれています。これらのプロパティは、CDCインバウンド・プロセスに関連がある唯一のプロパティです。TableName
を除き、これらのプロパティはコネクション・ファクトリを使用して指定することもできます。 コネクション・ファクトリの構成方法の詳細は、「IMS/DB CDCアダプタ・コネクション・ファクトリの構成」を参照してください。
WSDLでは、アダプタのコネクション・ファクトリの名前が<service>
セクションの<jca:address>
要素のadapterInstanceJndi
属性として指定されます。コネクション・ファクトリがアプリケーション・サーバーに存在する場合は、そのプロパティが使用されます。それ以外の場合は、ActivationSpec
によって指定されたプロパティが使用されます。値がコネクション・ファクトリとActivationSpec
の両方で指定されている場合は、ActivationSpec
プロパティの値がコネクション・ファクトリの値よりも優先されます。コネクション・ファクトリに指定された値を使用する場合は、WSDLからプロパティを削除する必要があります。
次にCDCインバウンドWSDLの例を示します。
<?xml version = '1.0' encoding = 'UTF-8'?> <definitions name="nation" targetNamespace="http://xmlns.oracle.com/pcbpel/dlg1_ CDCQueue/nation" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:legacyReq="noNamespace://dlg1_CDCQueue" xmlns:tns="http://xmlns.oracle.com/pcbpel/dlg1_CDCQueue/nation" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/" xmlns:pc="http://xmlns.oracle.com/pcbpel/" xmlns:legacyRes="noNamespace://DEMO#"> <types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="noNamespace://dlg1_CDCQueue" targetNamespace="noNamespace://dlg1_CDCQueue" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:element name="nationStream" type="nationStreamDescription"/> <xsd:complexType name="nationStreamDescription"> <xsd:sequence> <xsd:element name="nation" type="nationOut" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="nationOut" type="nationOut"/> <xsd:complexType name="nationOut"> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="1" name="header" type="nation__header"/> <xsd:element minOccurs="0" maxOccurs="1" name="data" type="nation__data"/> </xsd:sequence> </xsd:complexType> <xsd:element name="nation__data" type="nation__data"/> <xsd:complexType name="nation__data"> <xsd:attribute name="n_nationkey" type="xsd:int" use="required"/> <xsd:attribute name="n_name" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="25"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="n_regionkey" type="xsd:int" use="required"/> <xsd:attribute name="n_comment" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="152"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <xsd:element name="nation__header" type="nation__header"/> <xsd:complexType name="nation__header"> <xsd:attribute name="timestamp" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="26"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="tableName" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="64"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="operation" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="12"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="transactionID" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="24"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="context" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="32"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="agent_context" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="64"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="terminalID" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="4"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="taskID" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="8"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:schema> </types> <message name="event"> <part name="event_nation" element="legacyReq:nationStream"/> </message> <portType name="nationPortType"> <operation name="nation"> <input name="Event_nation" message="tns:event"/> </operation> </portType> <binding name="nationJCABinding" type="tns:nationPortType"> <pc:inbound_binding/> <operation name="nation"> <jca:operation ActivationSpec="com.oracle.adapter.oracle.AttuCDCActivationSpec" TableName="nation" JdbcDataSource="jdbc/CdcContextOracleDS" CdcStreamPositionsTable="" EisName="dlg1_CDCQueue" ServerName="server1-xp" PortNumber="2551" UserName="" Password="" Workspace="dlg1_sa" RetryInterval="15" ConnectTimeout="0"/> <input/> </operation> </binding> <service name="nationService"> <port name="nationPort" binding="tns:nationJCABinding"> <jca:address ResourceAdapterClassName="com.oracle.adapter.AttuResourceAdapter" adapterInstanceJndi="eis/legacy/dlg1_CDCQueue"/> </port> </service> <plt:partnerLinkType name="nationPartnerLinkType"> <plt:role name="nationRole"> <plt:portType name="tns:nationPortType"/> </plt:role> </plt:partnerLinkType> </definitions>
注意: この例では、要素 <nation> は配列として定義されています。この配列の最大要素数は、対応するCDC QueueアダプタのmaxRecords によって定義されています。 |
CDCリソース・アダプタ作業スレッドで問題が発生した場合、そのスレッドは定義された時間(retryInterval
)だけ待機してから、最後の操作を再試行します。アダプタを停止する場合は、エンドポイントを非アクティブ化する必要があります。リソース・アダプタの動作は、ロールバック・ループのタイプに応じて異なります。いずれの場合でも、リソース・アダプタによって対応するエラー・メッセージがリソース・アダプタのログ・ファイルに書き込まれて、メッセージがメッセージ・リスナーonAlert
メソッドに送信されます。
Oracle Connectへの接続が切断された場合は、接続が再度確立されるまで、リソース・アダプタは常に定義された時間(retryInterval
)待機します。
その他すべての場合では、リソース・アダプタは即座に最後の操作を再試行します。その結果問題が発生した場合、リソース・アダプタは、最初はretryInterval
の時間だけ待機し、その後は試行ごとに待機時間を2倍にして徐々に長い時間待機します。ただし、1分を超えて待機することはありません。
2PCのprepare
操作の前にOracleASリソース・マネージャによってロールバックが起動される場合は、CDCリソース・アダプタによって、問題をトラブルシューティングするときに役立つ特別な操作が実行されます。この場合は、リソース・アダプタによって、最後のイベント配列から各イベントが個別にBPELエンドポイントに送信されます。エンドポイントでは、問題があった最後のイベントのストリーム位置がROLLBACK_STREAM_POSITION列に保存されます。
CDCリソース・アダプタ作業スレッドでロールバック・ループが発生したことに気付いた場合は、ROLLBACK_STREAM_POSITION
の値がNULLでないかどうかをチェックします。この値がNULLでない場合は、データに問題があったかどうかをチェックします。問題があるイベントは、現在のストリーム位置の値を使用して、ステージング領域から選択できます。このようにデータを分析して、問題を特定できます。さらに、問題があるイベントをスキップすることもできます。この場合は、エンドポイントを停止して、NEW_STREAM_POSITION
列をROLLBACK_STREAM_POSITION
の値で更新します。