ヘッダーをスキップ
Oracle Application Server CDC Adapters for DB2ユーザーズ・ガイド
10g リリース3(10.1.3.4)
B53285-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

4 Oracle BPEL Process Managerのデプロイメントと統合

OracleAS CDC Adapters for DB2をOracle BPEL Process Managerにデプロイして統合するには、BPEL Process Managerを構成する必要があります。

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

Oracle 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 DB2の構成の一部として定義されているCDCソリューションは、パートナ・リンクとして編成に統合されます。 各パートナ・リンクは、CDC表を記述するWSDLにリンクされています。


関連項目:


『Oracle Application Server Adapter概要』

アプリケーション・サーバーでのDB2 CDC Adapterの構成

OC4Jアプリケーション・サーバーまたはWebLogicアプリケーション・サーバーを使用して、Oracle Connectレガシー・アダプタをデプロイできます。 この項では、レガシー・アダプタをデプロイする方法、必要な接続を設定する方法およびCDCストリーム位置表を構築する方法について説明します。

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

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ストリーム位置表

説明

TABLE_NAME

インバウンド・プロセスのCDC表の名前。

この列のデータは変更しないでください。

STREAM_POSITION

現在の表のCDCプロセスで最後にコミットされたストリーム位置。

この列のデータは変更しないでください。

PREPARED_STREAM_POSITION

現在の表のCDCプロセスで最後に準備されたストリーム位置。

この列のデータは変更しないでください。

ROLLBACK_STREAM_POSITION

ロールバック・ループの場合、この列には、ロールバック時に発生したイベントのストリーム位置が含まれています。

NEW_STREAM_POSITION

この列に有効なストリーム位置の値を入力して、現在のストリーム位置を手動で変更できます。 この列を更新する前に、対応するCDCプロセスを非アクティブ化してください。

注意: XID_FORMAT列がNULL値であることを確認してください。 XID_FORMAT列がNULLでない場合は、この列に値を入力しないでください。

XID_FORMAT

XID_BRANCH

XID_GLOBAL

最後に準備されたXIDフィールド。 XID_FORMAT列がNULLである場合、ストリーム位置はコミットされています。 この場合、XID_BRANCH列とXID_GLOBAL列には最後にコミットされた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>

DB2 CDC Adapterコネクション・ファクトリの構成

Oracle Connectレガシー・アダプタのRARをjca-legacy-adapterという名前でOC4JサーバーまたはWebLogicサーバーにデプロイします。

OC4Jアプリケーション・サーバーまたはWebLogicアプリケーション・サーバーで、適切なコネクション・ファクトリを作成します。

次の表に、コネクション・ファクトリのプロパティの説明を示します。

表4-2 CDCインバウンド・プロセスの接続プロパティ

プロパティ 説明

eisName

必須。 使用するアダプタの名前を設定します。 アダプタは、Oracle Studioを使用してOracle Connectサーバーに定義します。

serverName

必須。 Oracle Connectデーモンが実行されているサーバーの名前をTCP/IPアドレスまたはホスト名で入力します。 デーモンの詳細は、「デーモンの高度なチューニング」も参照してください。

workspace

必須。 使用するOracle Connectサーバー・ワークスペースの名前を指定します。 ワークスペースの詳細は、「ワークスペース」も参照してください。

portNumber

オプション。 サーバー上でOracle Connectデーモンが実行されているTCP/IPポートを指定します。 デフォルト・ポートは2551です。

userName

オプション。 Oracle Connectサーバーにアクセス可能なユーザーを指定します。 ユーザーは、Oracle Connectデーモン構成で定義されます。 Oracle Connectサーバーへのアクセスを許可されるユーザーの詳細は、デーモンの「セキュリティ」およびワークスペースの「セキュリティ」も参照してください。

password

オプション。 ユーザーの有効なパスワードを指定します。

persistentConnection

デフォルトでは、trueに設定されています。この値は変更しないでください。

keepAlive

デフォルトでは、trueに設定されています。この値は変更しないでください。

firewallProtocol

オプション。 使用するファイアウォール・プロトコルをnoneまたはfixedNat(デーモンで固定アドレスを使用するNATプロトコル)で指定します。 デフォルトでは、noneに設定されています。

connectTimeout

オプション。 接続タイムアウトを秒単位で指定します。 デフォルトは0であり、接続タイムアウトがないことを示しています。

encryptionProtocol

オプション。 使用する暗号化プロトコルの名前を設定します。 デフォルトでは、RC4に設定されています。 このプロパティの値が定義されていない場合は、RC4プロトコルが使用されます。

encryptionKeyName

オプション。 使用する対称暗号化キーの名前を指定します。

encryptionKeyValue

オプション。 使用する対称暗号化キーの値を指定します。

useNamespace

デフォルトでは、trueに設定されています。この値は変更しないでください。

exposeEventStreamMetadata

デフォルトでは、trueに設定されています。この値は変更しないでください。

retryInterval

オプション。 リソース・アダプタが、サーバーでイベントが検出されない場合に次のリクエストを発行するまで待機する時間を指定します。 デフォルト値は15秒です。

jdbcDataSource

必須。 cdcStreamPositionsTableを含むJDBCネイティブ・データソースのJNDI名。

cdcStreamPositionsTable

CDCインバウンド・プロセスを制御するために使用されるSQL表。 詳細は、「CDCストリーム位置表の定義」を参照してください。


Oracle BPEL Process Managerの構成

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

Oracle Connectサーバーのメタデータへの接続の設定

Oracle Connectサーバーへの接続を設定して、JDeveloperによってビルドされる自動BPELアプリケーションを準備するには、次の手順を実行します。

  1. 「Oracle BPEL Admin」ウィンドウを開きます。

  2. 「サーバー」タブの「構成」タブで、次の項目を指定します。

    • LegacyServer: Oracle ConnectがインストールされているサーバーのIPアドレス。

    • LegacyPort: Oracle Connectがインストールされているサーバーのポート番号。

  3. Oracle BPEL Process Managerによって使用される各Oracle Connectサーバーについて、前述の手順を繰り返します。 異なるサーバーとポートの組合せは、カンマを使用して区切ります。

  4. 「適用」をクリックします。

  5. Oracle SOA Suiteを再起動します。

JDeveloperによるインバウンド・アプリケーションへのCDCインバウンド・プロセスの統合

次の項では、CDCインバウンド・プロセスをインバウンド・アプリケーションに統合する方法について説明します。

CDC Adapterパートナ・リンクの構成

CDCアダプタ・パートナ・リンクを構成するには、Oracle JDeveloperで次の手順を実行します。

  1. ビジュアル・エディタの「サービス」レーンの1つにパートナ・リンクをドラッグします。

  2. 「パートナ・リンクの作成」ダイアログ・ボックスで、「サービス・エクスプローラ」ボタン(「WSDL設定」の下にある2番目のボタン)をクリックします。

  3. サービス・エクスプローラで、「アダプタ・サービス」を開きます。

  4. DB2リソース・アダプタをデプロイした接続サーバーを開きます(CDCソリューションを作成したサーバーです)。

  5. 「アダプタ」「レガシー」を開いて、「Oracle BPEL Admin」ウィンドウを使用して定義したOracle Connectサーバーのリストを表示します。

  6. チェックするメタデータを持つOracle Connectサーバーを開いて、ワークスペースのリストを表示します。

    作成したCDCステージング領域ワークスペースを開きます。 このワークスペースの名前には、接尾辞_saが付いています。

  7. CDCキュー・アダプタを開いて、取得された表のリストを表示します。

  8. 作業対象の表を選択して、「OK」をクリックします。

  9. 「パートナ・ロール」および「マイ・ロール」を定義して、「OK」をクリックします。

WSDLの構成

インバウンド・パートナ・リンクを構築すると、取得された表に対応するWSDLがOracle BPEL Process Managerによって自動的に作成されます。作成されるWSDLには、AttuCDCActivationSpecクラスのプロパティも含まれています。 これらのプロパティは、CDCインバウンド・プロセスに関連がある唯一のプロパティです。 TableNameを除き、これらのプロパティはコネクション・ファクトリを使用して指定することもできます。 コネクション・ファクトリの構成方法の詳細は、「DB2 CDC Adapterコネクション・ファクトリの構成」を参照してください。

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メソッドに送信されます。