ヘッダーをスキップ
Oracle Application Server Adapter for Tuxedoユーザーズ・ガイド
10g (10.1.3.1.0)
B31895-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

3 OC4JとのOracleAS Adapter for Tuxedoの統合

OracleAS Adapter for Tuxedoをデプロイし、Oracle Application Server Containers for J2EE(OC4J)と統合するには、J2CA 1.5 Tuxedoアダプタを構成する必要があります。

この項の構成は、次のとおりです。

OC4JとのOracleAS Adapter for Tuxedoの統合

Oracle Application Serverは、標準Java Development Kit(JDK)のJava仮想マシン(JVM)で動作する完全なJava 2 Enterprise Edition(J2EE)環境を提供します。OC4Jは、J2EEに認定されており、J2EE固有のコンテナ、APIおよびサービスをすべて提供します。 OC4JはJ2CA 1.5標準をサポートしています。

J2CAは、EISとのアプリケーションの統合を単純化する標準Javaインタフェースを定義します。 OracleASアダプタは、リソース・アダプタとしてOC4Jコンテナ内にデプロイされます。

OC4Jクライアント・アプリケーションとリソース・アダプタとの規約は、Common Client Interface(CCI)によって定義されます。OC4Jコンテナとリソース・アダプタとの規約は、サービス・プロバイダ・インタフェース(SPI)によって定義されます。SPI APIは、接続管理、トランザクション管理およびセキュリティ管理を取り扱います。

接続管理により、アプリケーション・コンポーネントは、EISに接続し、アプリケーション・サーバーが提供する接続プーリングを利用できるようになります。

トランザクション管理により、アプリケーション・サーバーは、トランザクション・マネージャを使用して複数のリソース・マネージャ全体のトランザクションを管理できるようになります。

ライフサイクル管理規約により、アプリケーション・サーバーは、アダプタのデプロイ中またはアプリケーション・サーバーの起動中にリソース・アダプタ・インスタンスを初期化できます。 また、アプリケーション・サーバーは、サーバーの停止中またはアダプタのアンデプロイ中にリソース・アダプタ・インスタンスに通知できます。

ライフサイクル規約により、アプリケーション・サーバーがリソース・アダプタ・インスタンスのライフサイクルを管理するメカニズムが提供されます。

作業管理規約により、リソース・アダプタが自らスレッドを作成するかわりに、アプリケーション・サーバーによってディスパッチされたスレッドを使用して、ロジックを実行できます。 Workインスタンスの発行によってハンドシェイクが実行されます。 これにより、アプリケーション・サーバーのスレッド管理が効率的になり、セキュリティやトランザクションなどの実行コンテキストをよりよく制御できるようになります。

EISからアプリケーション・サーバーへのインバウンド通信であるメッセージ・インフロー(「インバウンド用J2CA 1.5 Tuxedo Queueアダプタの構成」を参照)。


関連項目:

『Oracle Application Server Adapter概要』、『Oracle Application Server Containers for J2EEユーザーズ・ガイド』、『Oracle Application Server Containers for J2EEサービス・ガイド』および『Oracle Application Server Containers for J2EEセキュリティ・ガイド』

アウトバウンド用J2CA 1.5 Tuxedoアダプタの統合

この項の構成は、次のとおりです。

アウトバウンド用J2CA 1.5 Tuxedoアダプタの構成

Oracle Application Server管理のJ2CA 1.5 Tuxedoアダプタに接続するには、コネクション・ファクトリで関連するパレメータを設定する必要があります。 このタスクを実行するには、Oracle Enterprise Managerを使用するか、次の手順に従います。

  1. エディタで次のファイルを開きます。

    root\j2ee\home\application-deployment\default\oracle\oc4j-ra.xml
    

    rootは、Oracle Application Serverのルート・ディレクトリを示します。

  2. このファイルで、各接続に対して次のパラメータを設定します。

    <oc4j-connector-factories>
      <connector-factory location=" " connector-name="Oracle Legacy Adapter">
        <config-property name="userName" value=" "/>
        <config-property name="password" value=" "/>
        <config-property name="eisName" value=" "/>
        <config-property name="serverName" value=" "/>
        <config-property name="workspace" value=" "/>
        <config-property name="portNumber" value=" "/>
        <config-property name="persistentConnection" value=" "/>
        <config-property name="keepAlive" value=" "/>
        <config-property name="firewallProtocol" value=""/>
        <config-property name="connectTimeout" value=""/>
        <config-property name="encryptionProtocol" value=""/>
        <config-property name="encryptionKeyName" value=""/>
        <config-property name="encryptionKeyValue" value=""/>
        <config-property name="fakeXA" value=" "/>
        <config-property name="useNamespace" value=" "/>
        <config-property name="networkXMLProtocol" value=" "/>
        <config-property name="exposeEventStreamMetadata" value=" "/>
      </connector-factory>
    </oc4j-connector-factories>
    
    

    注意:

    locationは、Oracle Application Serverがアプリケーション・コンポーネントのコネクション・ファクトリ・インスタンスをバインドするJNDIロケーションを指定する属性です。

    表3-1は、これらのパラメータの詳細な説明を示しています。

    表3-1 アウトバウンド相互作用に関するOC4J接続のプロパティ

    プロパティ 説明

    location

    必須。Oracle Application Serverがアプリケーション・コンポーネントのコネクション・ファクトリ・インスタンスをバインドするJNDIロケーションを指定します。

    eisName

    必須。使用するアダプタの名前を設定します。 アダプタは、「Oracle Connectアダプタの構成」に説明されているように、Oracle Studioを使用してOracle Connectサーバーで定義されます。

    serverName

    オプション。Oracle Connectデーモンが動作しているTCP/IPアドレスまたはホスト名を設定します。 関連項目: デーモンの詳細は、付録C「デーモンの高度なチューニング」を参照してください。

    workspace

    オプション。使用するOracle Connectサーバー・ワークスペースの名前を指定します。 デフォルトのワークスペースはNavigatorです。 関連項目: ワークスペースの詳細は、「ワークスペース」を参照してください。

    portNumber

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

    userName

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

    password

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

    persistentConnection

    オプション。 trueまたはfalseに設定します。 trueに設定した場合、接続は、複数のリクエストまたは複数の接続コンテキストの変更全体にわたって存続できます。 このプロパティはtrueに設定することをお薦めします。

    keepAlive

    オプション。 trueまたはfalseに設定します。 trueに設定すると、接続に使用するソケットが常にオープン状態となります。 このプロパティはtrueに設定することをお薦めします。

    firewallProtocol

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

    connectTimeout

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

    encryptionProtocol

    オプション。使用する暗号化プロトコルの名前を指定します。 デフォルトはnullに設定されます。RC4プロトコルがサポートされます。

    encryptionKeyName

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

    encryptionKeyValue

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

    fakeXa

    オプション。 trueに設定すると、XA APIはローカル・トランザクションAPIに内部的に変換されます。 falseには設定しないでください。

    useNamespace

    オプション。 trueまたはfalseに設定します。 trueに設定すると、メタデータのレコード・スキーマではネームスペースが使用されます。

    networkXMLProtocol

    オプション。 ネットワーク上でXMLが渡される方法を指定します。 BinaryまたはTextを選択できます。

    exposeEventStreamMetadata

    オプション。 trueに設定すると、Tuxedo/Qアダプタのインバウンド・イベントのメタデータには標準XSDスキーマが使用されます。 falseに設定すると、固有のスキーマが使用されます。


複数のアダプタの構成

各J2CA 1.5 Tuxedoアダプタには、「アウトバウンド用J2CA 1.5 Tuxedoアダプタの構成」に説明されているように、oc4j-ra.xmlファイルにエントリが必要です。


関連項目:

『Oracle Application Server Adapter概要』

構成情報の更新

リソース・アダプタの構成設定を変更するには、oc4j-ra.xmlファイルで関連するconnector-factoryエントリを編集します。変更内容を有効にするには、Oracle Application Serverを停止して、再起動する必要があります。

CCI APIを使用したアプリケーションの開発

Common Client Interface(CCI)APIを使用して、アダプタ相互作用を実行するアプリケーションを開発できます。

J2CA 1.5 TuxedoアダプタでCCI APIを使用する手順は、次のとおりです。

  1. J2CA 1.5 TuxedoアダプタのConnectionFactoryオブジェクトを選択します。

  2. 選択したConnectionFactoryを使用してConnectionオブジェクトを作成します。Connectionは、EISへの基礎となるネットワーク接続に対するハンドルです。serverNameプロパティを使用してoc4j-ra.xmlファイルで識別されます。

  3. 選択したConnectionFactoryを使用してConnectionオブジェクトを作成します。AttuInteractionSpecオブジェクトを使用して相互作用プロパティを指定します。 AttuInteractionSpecオブジェクトの書式は、次のとおりです。

    AttuInteractionSpec(java.lang.String name, int verb, int timeOut)
    
    

    次の表に、指定できるプロパティを示します。

    表3-2 interactionSpecプロパティ

    プロパティ 説明

    name

    実行する相互作用名を指定します。

    verb

    相互作用のモード(SYNC_SENDSYNC_SEND_RECEIVEまたはSYNC_RECEIVE)を指定します。

    timeOut

    指定された相互作用の実行に対して、EISが待機する時間(ミリ秒単位)を指定します。


    次に、InteractionSpecのサンプルを示します。

    AttuInteractionSpec iSpeq = new AttuInteractionSpec("query", javax.resource.cci.InteractionSpec.SYNC_RECEIVE, 60);javax.resource.cci.RecordFactory rf = new AttuRecordFactory(con, mcf.getLogger());
    javax.resource.cci.MappedRecord queryRecord = rf.createMappedRecord("query"), queryRecord.put("##text", "select * from disam:nation"); javax.resource.cci.Record oRec = interaction.execute(iSpec, queryRecord);
    
    
  4. interactionexecuteメソッドを起動し、EISへのコールを開始します。相互作用に対するデータは、入出力レコードとして渡します。

  5. 相互作用による処理の終了後、InteractionおよびConnectionオブジェクトを閉じます。

インバウンド用J2CA 1.5 Tuxedo Queueアダプタの統合

この項の構成は、次のとおりです。

インバウンド用J2CA 1.5 Tuxedo Queueアダプタの構成

エンドポイントのプロバイダは、ejb-jar.xmlというエンドポイント・デプロイメント・ディスクリプタ・ファイルで、次の情報を提供する必要があります。

  • CICS QueueアダプタのActivationSpecクラスのプロパティ

  • エンドポイントに実装されたメッセージ・リスナーのタイプ

orion-ejb.xmlファイルに、リソース・アダプタの名前を含める必要があります。

OC4Jは、メッセージ・リスナーのタイプに対してリソース・アダプタのデプロイメント・ディスクリプタを検索し、各ActivationSpecクラスのエンドポイント・デプロイメント・ディスクリプタで定義されたプロパティを設定します。

リソース・アダプタは、メッセージ・リスナーのタイプとActivationSpecクラスを次のようにサポートしています。

表3-3 メッセージ・リスナーのタイプとActivationSpecクラス

メッセージ・リスナーのタイプ ActivationSpecクラス

javax.resource.cci.MessageListener

com.attunity.adapter.AttuActivationSpec

oracle.tip.adapter.api.OracleMessageListener

com.attunity.adapter.AttuOracleActivationSpec


例3-1 エンドポイント・デプロイメント・ディスクリプタ(ejb-jar.xml)

<ejb-jar>
  <display-name>AttuMDB1</display-name>  <enterprise-beans>  <message-driven>      <display-name>Attu Test Receiver Bean</display-name>      <ejb-name>AttuTestReceiverBean</ejb-name>      <ejb-class>attutestreceiverbean.AttuTestReceiverBean</ejb-class>      <messaging-type>javax.resource.cci.MessageListener</messaging-type>      <transaction-type>Container</transaction-type>      <activation-config>        <activation-config-property>          <activation-config-property-name>userName</activation-config-               property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>password</activation-config-              property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>firewallProtocol<             /activation-config-property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>connectTimeout</activation-             config-property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>encryptionProtocol             </activation-config-property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>encryptionKeyName             </activation-config-property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>encryptionKeyValue             </activation-config-property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>workspace              </activation-config-property-name>        </activation-config-property>        <activation-config-property>           <activation-config-property-name>portNumber              </activation-config-property-name>        </activation-config-property>        <activation-config-property>           <activation-config-property-name>useNamespace              </activation-config-property-name>        </activation-config-property>        <activation-config-property>           <activation-config-property-name>networkXMLProtocol              </activation-config-property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>idleTimeout              </activation-config-property-name>        </activation-config-property>        <activation-config-property>          <activation-config-property-name>messagesInBatch            </activation-config-property-name>          <activation-config-property-value>1</activation-config-property-value>         </activation-config-property>        <activation-config-property>          <activation-config-property-name>support2PC             </activation-config-property-name>          <activation-config-property-value>false</activation-config-              property-value>         </activation-config-property>        <activation-config-property>          <activation-config-property-name>waitTime             </activation-config-property-name>          <activation-config-property-value>5</activation-config-property-value>         </activation-config-property>        <activation-config-property>          <activation-config-property-name>retryInterval            </activation-config-property-name>          <activation-config-property-value>5            </activation-config-property-value>         </activation-config-property>        <activation-config-property>          <activation-config-property-name>eisName           </activation-config-property-name>          <activation-config-property-value>TUXGetEvents           </activation-config-property-value>         </activation-config-property>        <activation-config-property>          <activation-config-property-name>serverName            </activation-config-property-name>          <activation-config-property-value>drorr-xp            </activation-config-property-value>         </activation-config-property>        <activation-config-property>          <activation-config-property-name>exposeEventStreamMetadata             </activation-config-property-name>          <activation-config-property-value>true             </activation-config-property-value>         </activation-config-property>     </activation-config>     </message-driven>   </enterprise-beans>  <assembly-descriptor>  <!-- NotSupported, Supports, Required, RequiresNew, Mandatory or Never  -->    <container-transaction>      <method>        <ejb-name>          AttuTestReceiverBean        </ejb-name>        <method-name>          onMessage        </method-name>        <method-params>                 <method-param> javax.resource.cci.Record </method-param>        </method-params>      </method>      <trans-attribute>        NotSupported      </trans-attribute>    </container-transaction>    </assembly-descriptor> </ejb-jar>

次の表に、インバウンド相互作用に関連するプロパティを示します。

表3-4 インバウンド相互作用に関するOC4J接続のプロパティ

プロパティ 説明

location

必須。Oracle Application Serverがアプリケーション・コンポーネントのコネクション・ファクトリ・インスタンスをバインドするJNDIロケーションを指定します。

eisName

必須。使用するアダプタの名前を設定します。 アダプタは、「Oracle Connectアダプタの構成」に説明されているように、Oracle Studioを使用してOracle Connectサーバーで定義されます。

messagesInBatch

バッチでエンドポイントに移動できるメッセージの最大数を指定します。 デフォルトは1に設定されます。

support2PC

使用できる場合、グローバル・トランザクション・サポートを有効にします。 デフォルトはFalseに設定されます。 trueには設定しないでください。

waitTime

空のトランザクション期間と、Tuxedoアダプタがメッセージなしのレスポンス(これにより現行のトランザクションがクローズします)を戻す最大時間(秒)を定義します。 デフォルトは30秒に設定されます。

retryInterval

問題が検出されてからインバウンド・アクティビティが再開するまでのスリーピング・タイムを定義します。 デフォルトは15秒に設定されます。

serverName

オプション。Oracle Connectデーモンが動作しているTCP/IPアドレスまたはホスト名を設定します。 関連項目: デーモンの詳細は、付録C「デーモンの高度なチューニング」を参照してください。

workspace

オプション。使用するOracle Connectサーバー・ワークスペースの名前を指定します。 デフォルトのワークスペースはNavigatorです。 関連項目: ワークスペースの詳細は、「ワークスペース」を参照してください。

portNumber

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

userName

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

password

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

firewallProtocol

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

connectTimeout

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

encryptionProtocol

オプション。使用する暗号化プロトコルの名前を指定します。 デフォルトはnullに設定されます。RC4プロトコルがサポートされます。

encryptionKeyName

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

encryptionKeyValue

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

useNamespace

オプション。 trueまたはfalseに設定します。 trueに設定すると、メタデータのレコード・スキーマではネームスペースが使用されます。

networkXMLProtocol

オプション。 ネットワーク上でXMLが渡される方法を指定します。 BinaryまたはTextを選択できます。

exposeEventStreamMetadata

true(デフォルト)に設定されていると、EventStreamスキーマがエンドポイントに送信されます。


CCI APIを使用したメッセージ・エンドポイント・アプリケーションの開発

エンドポイントでは、onMessageメソッドを使用します。 次のサンプルに、CoreDomRecordクラスからDOMを受け取る方法を示します。

例3-2 onMessageメソッド

public Record onMessage(Record inMessage)throws javax.resource.ResourceException {

    …
    CoreDOMWriter domW;
    domW = new CoreDOMWriter(false);
    Element outEl = ((CoreDomRecord)inMessage).getDom();
    String xml = domW.toXMLString(outEl);
    …

 return null;

}

アダプタは戻り値を無視します。

Tuxedo Queueアダプタにemployeeおよびdepartmentの2つのタイプのメッセージが記述されている場合、XMLデータに、次の入力レコード構造を含める必要があります。

  • exposeEventStreamMetadataプロパティがtrueに設定されている場合:

    <eventStream>
      < EMPLOYEE>
         ...
      </ EMPLOYEE>
      <DEPARTMENT>
         ...
      </DEPARTMENT>
    </eventStream>
    
    
  • exposeEventStreamMetadataプロパティがfalseに設定されている場合:

    <getEventsResponse xmlns="noNamespace://QVREAD">
    <event eventName="EMPLOYEE" timestamp="2005-08-23T15:23:18">
      < EMPLOYEE>
         ...
      </ EMPLOYEE>
    </event>
    <event eventName=" DEPARTMENT " timestamp="2005-08-23T15:23:18">
      <DEPARTMENT>
        ...
      </DEPARTMENT>
    </event>
    </getEventsResponse>