ユーザーズ・ガイド

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

Oracle Tuxedo JCA Adapterユーザーズ・ガイド

この章には次のトピックが含まれます:

 


概要

Oracle Tuxedo JCA Adapter (Tuxedo JCA Adapter)はJCA Connector Architectureに基づいています。また、Javaアプリケーション・サーバーを、Oracle Tuxedoアプリケーション・ドメイン内のGWTDOMAINゲートウェイに接続し、Oracle Tuxedoとの双方向のアクセスを可能にします。Tuxedo JCA AdapterとGWTDOMAINゲートウェイ間の接続には、単純なまたは独自の形式の(高パフォーマンス) TCPソケット接続、、リンク・レベル暗号化、または業界標準のSSL/TLSを使用できます。いずれの接続タイプでも、Tuxedo JCA Adapterは、アプリケーション・レベルのTDOMAINセッションを作成し、TDOMAINプロトコルによってOracle Tuxedo GWTDOMAINゲートウェイと通信します。

TDOMAINプロトコルは、堅牢かつ強力なプロトコルです。このプロトコルは同期または非同期リクエストの応答、会話、Oracle Tuxedoのキュー操作、アイデンティティ伝播、トランザクション伝播およびドメイン認証をサポートします。

Tuxedo JCA Adapterは、リンク・レベルとサービス・レベルの両方のフェイルオーバーをサポートします。リンク・レベルのフェイルオーバーは、マルチ・ホスト・サーバー向けに設計されているので、プライマリ・ネットワーク・インタフェースが動作していない場合に、同一マシン上の別のネットワーク・インタフェースに切り替えることができます。また、リンク・レベルのフェイルオーバーは、GWTDOMAINゲートウェイを介して同じサービス・セットを提供する2つのOracle Tuxedoアプリケーション・ドメインで使用することもできます。プライマリ・ドメインが停止した場合や使用不可能になった場合に、バックアップ・ドメインを使用して接続とTDOMAINセッションを作成します。

サービス・レベルのフェイルオーバーでは、プライマリ・アクセス・ポイントが使用不可能になった場合に、バックアップ・リモート・アクセス・ポイントにサービス・リクエストを転送できます。リンク・レベルのフェイルオーバーとサービス・レベルのフェイルオーバーでは、対象となるオブジェクトが異なります。リンク・レベルのフェイルオーバーは接続に対して、サービス・レベルのフェイルオーバーはサービスに対して作用します。これらは互に独立していますが、連携して高可用性をもたらします。

アクセス・ポイント

アクセスポイントには次の2つのタイプがあります。

いずれのタイプのアクセス・ポイントでもnameidentifierを使用できます。nameは、構成内でアクセス・ポイントの構成エントリを識別するために使用します。つまり、その構成内で一意にする必要があります。identifierは、TDOMAINセッションの確立時にアクセス・ポイントを指定するために使用します。つまり、相互接続したすべてのドメイン間でグローバルに一意にする必要があります。

また、いずれのタイプのアクセス・ポイントにも1つまたは複数のネットワーク・アドレスを関連付けることができます。唯一異なる点は、デフォルトのローカル・アクセス・ポイントが構成されていないことです。ただしかわりに、動的に生成され、動的な登録の受入れが可能なリモート・アクセス・ポイントに再登録されます。

ローカル・アクセス・ポイントとリモート・アクセス・ポイントは、Oracle TuxedoドメインBDMCONFIGの構成ファイルでは、それぞれDM_LOCAL_DOMAINSDM_REMOTE_DOMAINSに対応します。

セッションとセッション・プロファイル

Tuxedo JCA Adapterは、TDOMAINセッションと呼ばれる、GWTDOMAINゲートウェイとのアプリケーション・セッションを作成します。このセッションにはローカル・アクセス・ポイントとリモート・アクセス・ポイントが1つずつ必要です。TDOMAINセッションは接続の上位に位置し、また、TDOMAINプロトコルで通信する2つのエンティティ間のプロトコルの交換を処理します。

注意: ローカル・アクセス・ポイントとリモート・アクセス・ポイントが通信できるようにセッションを構成する必要があります。

Tuxedo JCA Adapterのセッション・プロファイルにはセッションの特徴が記述されます。セッション・プロファイルには、構成可能な情報(接続ポリシー、セキュリティ、ブロック・タイムなど)が含まれます。また、セッションにはそのセッションに関連付けられたセッション・プロファイルが必要です。構成されていない場合は、デフォルトのセッション・プロファイルが使用されます。

インポートとエクスポート

Oracle Tuxedoのリソースは、JavaクライアントからCCIまたはJATMIを使用してアクセスできるようにインポートする必要があります。インポートしたリソースにはnameRemoteNameがあります。「name」は、JCAクライアントがTuxedo JCA Adapterに対して使用するリモート・リソース構成エントリを指示するために使用されます。「RemoteName」は、エクスポートされたリソースをリモート・アクセス・ポイントが参照する際に使用する実際の名前です。2つ以上のTDOMAINセッションが同じ構成エントリを使用して同じサービスを提供する場合、インポート済で同じ名前を持つすべてのOracle Tuxedoリソース間でロード・バランシングが行われます。

Tuxedo JCA Adapterは2つのロード・バランシング・アルゴリズムをサポートしています。デフォルトのロード・バランシング・アルゴリズムはRoundRobinですが、Randomに変更できます。Tuxedo JCA Adapterがインポート用に構成されていない場合、ロード・バランスを使用して構成されているすべてのリモート・アクセス・ポイント間ですべてのクライアント・リクエストが分散されます。これをデフォルト・インポートと呼びます。

Javaリソースは、クライアントからアクセスできるようにエクスポートする必要があります。エクスポート可能なリソースには次の3つのタイプがあります。

これらのリソースを構成しデプロイすると、Oracle Tuxedo ATMIクライアントはどのリソースに対してもパートナOracle Tuxedoアプリケーション・ドメインからアクセスできるようになります。

構成スタイル

Tuxedo JCA Adapterにはユーザー構成が必要です(この構成はリソース・アダプタ・デプロイメント記述子の他に必要です)。少なくとも、リモート・アクセス・ポイントを構成する必要があります。Tuxedo JCA Adapterを構成する場合、次の3つの方法があります。

リソース・アダプタ・デプロイメント記述子ベースの構成

リソース・アダプタ・デプロイメント記述子ベースの構成は、単純で簡単な構成の場合に使用します。すべての構成情報はリソース・アダプタ・デプロイメント記述子(ra.xml)に記述されます。構成にはローカル・アクセス・ポイント、リモート・アクセス・ポイントおよびセッション・プロファイルが含まれます。セッションは各ローカル・アクセス・ポイントから各リモート・アクセス・ポイントに対して暗黙的に定義されます。すべてのセッションで1つのセッション・プロファイルを共有します。

接続ファクトリ・ベースの構成

接続ファクトリ・ベースの構成は、複雑性と機能性の面で中間に位置します。また、接続ファクトリに関する追加情報を構成できます。そのファクトリを使用して作成した接続はすべて、同じ構成情報を継承します。各ファクトリの構成情報は互いに独立しています。各ファクトリの実際の構成情報は、リソース・アダプタ・デプロイメント記述子の構成情報と接続ファクトリ構成を組み合せたものです(接続ファクトリ構成が優先されます)。一部のJavaアプリケーション・サーバーでは、コンソールを使用してこれらの構成属性を構成できます。

構成ファイル・ベースの構成

構成ファイル・ベースの構成では、XMLベースの構成ファイルを個別に作成する必要があります。この構成方法はTuxedo JCA Adapterを構成するうえで最も完全な方法と言えます。追加のプライバシと保護が必要な情報が構成に含まれる場合は、Tuxedo JCA Adapterのツール(com.oracle.tuxedo.tools.DMConfigChecker)を使用して、それらの要素を暗号化し、適切に難読化されたキー・ファイルを生成する必要があります。このキー・ファイルは暗号化された要素を実行時に復号化する際に使用します。このツールはTuxedo JCA Adapterに付属されています。

注意: 2つ以上の構成スタイルの組合せはサポートされていません。前述のスタイルの中から1つのみを選択できます。

 


前提条件

Tuxedo JCA Adapterのインストールとデプロイには、次の前提条件が必要です。

 


Oracle Tuxedo JCA Adapterのインストール

Tuxedo JCA Adapterリリース12cは1つの.ZIPファイルで配布されています(Oracle Webサイトからダウンロードできます)。この.ZIPファイルは、Tuxedo JCA Adapter一式とJDeveloper用のTuxedo JCA Adapter SOA構成ウィザードを含む4つのファイルで構成されています。

ダウンロードした.zipファイルを、読み書きアクセス制御が正しく設定されたターゲット・ディレクトリにコピーします。ファイルを展開して内容を確認します。

表1に、Tuxedo JCA Adapterリソースの.zipファイルの内容を示します。

表1 Tuxedo JCA Adapterリソース・アーカイブ・ファイルの内容
リソース名
説明
com.oracle.tuxedo.TuxedoAdapter.rar
Tuxedo JCA Adapterリソース・アーカイブの一式。
soa-config.xml
Tuxedo JCA Adapter構成ウィザードで更新されるSOA構成ファイル。
tuxedoAdapter-config.xml
Tuxedo JCA Adapter構成。
com.oracle.tuxedo.adapter.tja_soa_1.3.0.0.jar
SOA用のTuxedo JCA Adapter構成ウィザード。

読取り/書込み権限が正しく設定されたパッケージ・ディレクトリにリソース・アーカイブ(RAR)ファイルをコピーできます。リソース・アーカイブを展開して内容をブラウズし、標準デプロイメント記述子を表示します。

表2に、Tuxedo JCA Adapterリソース・アーカイブ・ファイルの内容を示します。

表2 Tuxedo JCA Adapterリソース・アーカイブ・ファイルの内容
リソース名
説明
com.oracle.tuxedo.adapter_1.4.0.0.jar
Tuxedo JCA Adapterクラスを含んでいるJARファイル。
com.bea.core.jatmi_2.0.1.0.jar
Java ATMIバッファ・タイプおよびインタフェースを含んでいるJARファイル。

注意: WebLogic Serverの場合、このJARファイルをエクスポートする必要があります。そのために、インストールされたWebLogic Serverに含まれているものを、EXT_PRE_CLASSPATHを使用して上書きします。この環境変数は、WebLogicサーバーを開始する前に設定する必要があります。

com.bea.core.i18n_1.4.0.0.jar
I18Nユーティリティ・クラス。

注意: WebLogic Serverのバージョンが11gR1以上の場合、CLASSPATHにこのJARファイルを設定しないでください。

javax.transaction_1.0.0.0_1-1.jar
JTA 1.1クラス。
javax.ejb_3.0.1.jar
EJB 3.0サポート・クラス。
adapter.properties
Tuxedo JCA Adapterメッセージ・カタログ。
adapter_ja.properties
Tuxedo JCA Adapter日本語メッセージ・カタログ。
tja.xsd
Tuxedo JCA Adapter構成XMLスキーマ。
dmconfig.xml
Tuxedo JCA Adapter構成ファイルの例。
META-INF/ra.xml
ファクトリ・ベースの構成スタイルを使用するリソース・アダプタ・デプロイメント記述子の例。
META-INF/client-side.ra.xml
クライアント側のみの構成スタイルを使用するリソース・アダプタ・デプロイメント記述子の例。
META-INF/server.ra.xml
構成としてdmconfigを使用するリソース・アダプタ・デプロイメント記述子の例。
dmconfigを使用してTuxedo JCA Adapterを構成することを選択した場合、このサンプル・デプロイメント記述子の名前を ra.xmlに変更し、独自のdmconfigファイルを参照するように変更できます。独自のdmconfigファイルのベースとして、サンプルのdmconfig.xmlを使用できます。
META-INF/weblogic-ra.xml
リソース・アダプタ用のWebLogic Serverデプロイメント記述子の例。接続ファクトリ・インタフェースとファクトリのJNDI名を定義します。
META-INF/sample.weblogic-ra.xml
ファクトリ・ベースの構成を含むTuxedo JCA Adapter用のWebLogic Serverデプロイメント記述子の例。
META-INF/MANIFEST.MF
Tuxedo JCA Adapter Manifestファイル

注意: com.bea.core.i18n_1.4.0.0.jarは、WebLogic Server以外のJavaアプリケーション用です。このファイルはWebLogic Serverを置換するために設定しないでください。オーバーライドする必要があるファイルは、WebLogic Serverのcom.bea.core.jatmi_xxxx.jarファイルのみです。
注意: Tuxedo JCA Adapterリソース・アーカイブには、Tuxedo JCA Adapterを有効化するための最新の修正ファイルが含まれています。その他のJavaアプリケーション・サーバーの場合、JATMIファイルのオーバーライドは不要です。

アプリケーション・サーバーのサポート

Tuxedo JCA Adapterリリース12cは次のプラットフォームをサポートしています。

JDeveloper用Oracle Tuxedo JCA Adapter SOA構成ウィザードのインストール

Tuxedo JCA AdapterのZIPファイルには、JDeveloper用のSOA構成ウィザードで使用する3つのファイルが含まれています。この機能を使用すると、SOAアプリケーションを構成して、Oracle Tuxedoアプリケーション・ドメイン内に存在するサービスにアクセスでるようになります。そのためには、JDeveloperでTuxedo JCA Adapter構成ウィザードが認識されるように、この3つのファイルを正しくインストールする必要があります。

Tuxedo JCA Adapter SOA構成ウィザード・パッチをインストールするには、次の手順を実行します。

  1. com.oracle.tuxedo.adapter.tja_soa_1.3.0.0.jar$JDEVELOPER_HOME/jdev/lib/patchesにコピーします。
  2. tuxedoAdpater-config.xml$JDEVELOPER_HOME/integration/seed/soa/configurationにコピーします。
  3. 必要に応じて$JDEVELOPER_HOME/integration/seed/soa/configuration/soa-config.xmlを保存します。
  4. soa-config.xmlをTuxedo JCA Adapterの.zipファイルから$JDEVELOPER_HOME/integration/seed/soa/configurationにコピーします。

JDeveloperは$JDEVELOPER_HOMEディレクトリにインストールされます。

JDeveloperのサポート

Tuxedo JCA Adapterリリース12cにはSOA用の構成ウィザードが含まれています。これはJDeveloper 11gR1リリース1 (11.1.1.4.0)をサポートしています。

 


Oracle Tuxedo JCA Adapterの使用

Oracle Tuxedoアダプタは、次の3つの方法のいずれかを使用して構成できます。

注意: 3つの方法のいずれかを選択してTuxedo JCA Adapterを構成する必要があります。3つを組み合せる方法は、サポートされていません。

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

構成の概要

XMLベースの構成ファイルを使用すると、Tuxedo JCA Adapterの能力をフルに使用して構成できます。構成要件が複雑なユーザーに適切です。この方法を使用して構成する場合、リソース・アダプタ・デプロイメント記述子のresourceadapter要素で、resourceadapter-classcom.oracle.tuxedo.adapter.TuxedoResourceAdapterと構成する必要があります。

リスト1に、XMLベースのdmconfigファイルを使用可能にする、リソース・アダプタ・デプロイメント記述子のフラグメントを示します。

リスト1 XMLベースの構成ファイルを使用するためのリソース・アダプタ・デプロイメント記述子
...
<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoResourceAdapter</resourceadapter-class>
    <outbound-resourceadapter>
      <connection-definition>
<managedconnectionfactory-class>com.oracle.tuxedo.adapter.spi.TuxedoManagedConnectionFactory</managedconnectionfactory-class>
  </outbound-resourceadapter>
</resourceadapter>

一般にはra.xmlというファイル名で知られているリソース・アダプタ・デプロイメント記述子ベースの構成は、デプロイメント記述子のカスタム・プロパティを使用します。これはTuxedo JCA Adapterの構成機能の一部であり、クライアント側のみの操作に適切です。Tuxedo JCA Adapterを構成する簡単な方法です。

リソース・アダプタ・デプロイメント記述子方式を使用して構成するには、リソース・アダプタ・デプロイメント記述子のresourceadapter要素で、「"resourceadapter-class"」を「com.oracle.tuxedo.adapter.TuxedoClientSideResourceAdapter」と構成する必要があります。

リスト2に、カスタム・プロパティ・ベースの構成を可能にする、リソース・アダプタ・デプロイメント記述子のフラグメントを示します。

リスト2 カスタム・プロパティを使用するリソース・アダプタ・デプロイメント記述子
<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoClientSideResourceAdapter</resourceadapter-class>
    <outbound-resourceadapter>
      <connection-definition>
        <managedconnectionfactory-class>com.oracle.tuxedo.adapter.spi.TuxedoManagedConnectionFactory</managedconnectionfactory-class>
  </outbound-resourceadapter>
</resourceadapter>

ファクトリ・ベースの構成では、ベンダー固有の方法を使用して、接続ファクトリを構成します。各接続ファクトリには独自の構成があります。リソース・アダプタ・デプロイメント記述子ベースの構成より、Tuxedo JCA Adapterの構成機能をより多く活用でき、より簡単にTuxedo JCA Adapterを構成できます。Tuxedo JCA Adapterを構成する最も簡単な方法です。

ファクトリ・ベースの構成方式を使用して構成するには、'resourceadapter'要素の"resourceadapter-class"com.oracle.tuxedo.adapter.TuxedoFBCResourceAdapterを、outbound-resourceadapter要素のconnection-definitionmanagedconnectionfactory-classに値com.oracle.tuxedo.adapter.spi.TuxedoFBCManagedConnectionFactoryを構成する必要があります。

リスト3に、ファクトリ・ベースの構成を可能にする、リソース・アダプタ・デプロイメント記述子のフラグメントを示します。

リスト3 リソース・アダプタ・デプロイメント記述子のフラグメント
<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoFBCResourceAdapter</resourceadapter-class>
  <outbound-resourceadapter>
    <connection-definition>
       <managedconnectionfactory-class>com.oracle.tuxedo.adapter.spi.TuxedoFBCManagedConnectionFactory</managedconnectionfactory-class>
  </outbound-resourceadapter>
</resourceadapter>

デプロイメント記述子ファイルに/Domain構成(dmconfig)が構成されているが、構成されている"resourceadapter-class"クラスがcom.oracle.tuxedo.adapter.TuxedoResourceAdapter ではない場合は、dmconfigの情報は無視されます。

構成されているresourceadapter-classクラスがTuxedoResourceAdapterの場合は、すべてのリソース・アダプタ構成関連のカスタム・プロパティが無視されます。

デフォルトの構成

デフォルトの構成とは、ある一部の構成オブジェクト・タイプの構成がどれも明示的に構成されていない場合に、それらの構成オブジェクト・タイプの構成が動的に生成される、Tuxedo JCA Adapterの機能を意味します。すべての構成オブジェクト・タイプがデフォルトの構成をサポートしているわけではありません。Local AccessPointSessionProfileSessionおよびImportで使用できます。その他の構成オブジェクト・タイプ(ResourcesRemoteAccessPoint Exportなど)はこのタイプの構成をサポートしていません。

デフォルトの構成は3つの構成スタイルのすべてで機能します。状況により、LocalAccessPointSessionProfileSessionおよびImportの構成が不要になります。その場合、dmconfigファイルでRemoteAccessPoint、またはResource Adapter Deployment DescriptorファイルでremoteAccessPontSpec、またはファクトリ・ベースの構成ファイルでremoteAccessPointSpecを構成するのみで済む場合があります。これによりTuxedo JCA Adapterの操作性が大いに向上します。

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

デフォルトLocalAccessPoint

default LocalAccessPointを使用しても、LocalAccessPointを構成せずに済むわけではありません。リスニング・エンド・ポイントはなく、Oracle Tuxedo GWTDOMAINゲートウェイからのインバウンド接続リクエストを受け入れません。可能な接続ポリシーはON_STARTUPだけです。

dmconfigベースの構成およびデプロイメント記述子ベースの構成では、default LocalAccessPointを1つのみ持つことができますが、ファクトリ・ベースの構成の場合、各ファクトリで独自のdefault LocalAccessPointを持つことができます。

default LocalAccessPointは、使用時に、UUIDベースのLocalAccessPointIdを作成します。このUUIDベースのLocalAccessPointIdは、.lapidという名前のファイルに書き込まれますが、ファクトリ・ベースの構成の場合、.lapid.<factory-name>という名前のファイルが作成されます。

dmconfigベースの構成の場合、default LocalAccessPointはSSLをサポートしません。SSLを必要とする場合は、LocalAccessPointを構成する必要があります。

デプロイメント記述子ベースの構成の場合、default LocalAccessPointは限定的にSSLをサポートします。そのためには、リソース・アダプタ・デプロイメント記述子にカスタム・プロパティ identityKeyStoreFileNameprivateKeyAliastrustedKeyStoreFileNameを構成します。Key StoreIdentity AliasおよびTrusted Certificate Storeにはパスワード保護を構成できません。

ファクトリ・ベースの構成の場合、default LocalAccessPointはSSLをサポートします。Key Store、Identity AliasおよびTrusted Certificate Storeにパスワードを指定できます。

動的なRemoteAccessPoint (RAP)の挿入

default LocalAccessPointが機能するようにするには、Oracle Tuxedo GWTDOMAINゲートウェイ構成により、この簡略化された/Domain構成が機能するようにする必要があります。

動的なRemoteAccessPoint (RAP)登録ができるようにGWTDOMAINゲートウェイを変更する必要があります。DYNAMIC_RAPYESに設定されている場合、動的に登録されたRAPから、接続のステータスのメモリー内データベースの更新も行います。それらの動的に登録されたRAPからの接続が失われた場合、そのRAPに関する情報はメモリー内データベースから削除されます。

注意: 動的なRemoteAccessPointの登録/挿入がTuxedo GWTDOMAINゲートウェイで有効化されている場合、REMOTE_DOMAINSセクションで構成されていないと、すべてのリモート・アクセス・ポイントがゲートウェイに接続できるとは限りません。
注意: default LocalAccessPointが有効化されている状態のTuxedo JCA Adapterのみが、リモートのOracle Tuxedo GWTDOMAINゲートウェイに接続できます。GWTDOMAINが接続リクエストを受信すると、リモート・ドメインが構成されているかどうかチェックします。構成されていない場合、DYNAMIC_RAPYESに設定されているかどうかをチェックします。YESに設定されている場合、メッセージ・データをチェックして、リクエストが正当なTuxedo JCA Adapterからのものかどうかを確認します。

GWADMを、DM MIBを正しく処理するように変更して、動的に登録されたRAPの接続ステータスが反映されるようにする必要があります。動的に登録されたRAPからの接続が失われた場合、DM MIB問合せが接続ステータスを正しく戻すように、メモリー内データベースのエントリも削除されます。

動的に登録されたRAPは、/DOMAIN構成に無期限で追加されません。その存在がわかるのは、セッションが確立されている場合のみです。接続が失われると、存在は失われます。

Oracle Tuxedo /Domain DMIBが呼び出すDM_CONNECTIONは、動的に登録されたすべての接続済のRemoteAccessPointを戻します。それ以外の動的に登録された未接続のRemoteAccessPointは表示されません。

それらの動的に登録されたRAPへのOPENCONNECTION DMIBリクエストの接続はサポートされていません。

CLOSECONNECTION Oracle Tuxedo /DMIBリクエストは接続をクローズして、それらの動的に登録されたRemoteAccessPointからのセッションを削除し、接続ステータスUNKNOWNを戻します。

CONNECTION_POLICYPERSISTENT_DISCONNECTタイプが適用され、PERSISTENT_DISCONNECTが有効な場合、任意のRAPからの接続リクエストはいずれも、動的に登録されているかどうかにかかわらず拒否されます。

デフォルトSessionProfile

dmconfig構成ファイルでSessionProfileが構成されているかどうかに関わらず、アダプタに関するデフォルト・セッション・プロファイルは常に作成されます。dmconfigベースの構成とデプロイメント記述子ベースの構成では、デフォルトSessionProfileは1つのみ存在でき、それがアダプタに関するデフォルトSessionProfileになります。

dmconfigベースの構成を使用する場合、アダプタに関するデフォルトSessionProfileは変更できませんが、デフォルト以外の異なるSessionProfileが必要な場合、適切なSessionProfileを構成し、ターゲットSessionに割り当てる必要があります。

一連のカスタム・プロパティを使用してリソース・デプロイメント記述子ベースの構成を使用する場合は、アダプタに関するデフォルトSessionProfileを変更できます。デプロイメント記述子ベースの構成を使用する場合、固有セッション・プロファイルを明示的に構成できないので、このアダプタに関するデフォルトSessionProfileが、すべてのセッションで使用されます。

ファクトリ・ベースの構成は、アダプタに関するデフォルトSessionProfileに加え、ファクトリに関するデフォルトSessionProfileもサポートします。この構成メソッドを使用する場合、アダプタに関するデフォルトSessionProfileは変更できませんが、一連のファクトリ・カスタム・プロパティを使用してファクトリに関するデフォルトSessionProfileを変更することはできます。接続ファクトリにより作成された接続に対してデフォルトSessionProfileが適切でない場合、各接続ファクトリに対して、ファクトリに関するデフォルトSessionProfileを構成できます。

表3に、デフォルト構成のSessionProfileタイプ要素を示します。

注意: 表3に示すように、リソース・アダプタ・デプロイメント記述子ファイルで構成されたSessionProfile関連プロパティは、デフォルトSessionProfileの構造内で使用されます。

表3 SessionProfileタイプ要素
要素名
プロパティ名
種類
デフォルト値
説明
Security
spSecurity
string
なし
必要な/Domainセッション認証のタイプ。
BlockTime
spBlockTime
int
60000
このプロファイルを使用するブロッキング・アウトバウンド・リクエストで許容される最大ミリ秒数。
Interoperate
spInteroperate
ブール
false
セッションがリモートのTuxedo 6.5リリースGWTDOMAINゲートウェイとの相互運用を許容されているかどうかを指定します。
ConnectionPolicy
該当なし
string
“ON_STARTUP"
このGWTDOMAINセッションが確立される条件。
CredentialPolicy
spCredentialPolicy
string
“LOCAL"
ユーザー資格証明通知ポリシー。値がLOCALの場合、通知はありません。
RetryInterval
spRetryInterval
long
60
セッションが自動接続確立試行を繰り返す前に待機する秒数。ConnectionPolicyON_STARTUPに設定されている場合のみ、意味があります。
MaxRetries
spMaxRetries
long
9223372063857758078
Tuxedo JCA AdapterがリモートのOracle Tuxedoアクセス・ポイントへのセッション接続を確立しようとする回数の最大値。ConnectionPolicyON_STARTUPに設定されている場合のみ、意味があります。
CompressionLimit
spCompressionLimit
int
2147483647
データをリモートのOracle Tuxedoアクセス・ポイントに送信する場合にセッションが使用する圧縮しきい値。このサイズより大きなアプリケーション・バッファは、圧縮されます。
MinEncryptBits
spMinEncryptBit
string
0
セッションがセッション接続を確立した後に使用する暗号化キーの最小長(単位はビット)。値「0」は、暗号化がオプションであることを示します。値「256」はSSLの場合に使用します。キー強度256ビットは、単にSSLをサポートするためです。
MaxEncryptBits
spMaxEncryptBit
string
128
セッションがセッション接続を確立した後にデータ・トランスポートに使用する暗号化キーの最大長(単位はビット)。値「0」は、暗号化がオプションであることを示します。値「256」はSSLの場合に使用します。キー強度256ビットは、単にSSLをサポートするためです。
KeepAlive
spKeepAlive
long
0
GWTDOMAINセッションでアプリケーション・レベルのキープ・アライブが構成されているかどうか、およびその場合に待機タイマーのが計時を開始するまでの最大アイドル・タイムを指定します。単位はミリ秒です。
KeepAliveWait
spKeepAliveWait
long
10000
セッションがアプリケーション・レベルのキープ・アライブ確認を必要とするかどうか、確認を受信できない場合、どれくらいの時間待機してから、接続にアクセスできないと宣言するかを指定します

注意: プロパティ名はリソース・アダプタ・デプロイメント記述子ベースの構成とファクトリ・ベースの構成で同じです。

デフォルト・セッション

リソース・アダプタ・デプロイメント記述子ベースの構成またはファクトリ・ベースの構成が使用される場合、またはdmconfigファイルにSessionが構成されていない場合は、すべてのローカル ・アクセス・ポイントとすべてのリモート・アクセス・ポイントの間に、セッションが暗黙的に作成されます。これはデフォルト・セッションと呼ばれます。デフォルト・セッションが使用される場合は、リソース・アダプタ・デプロイメント記述子ベースまたはdmconfigベースの構成が使用されるときにのみ、アダプタに関するデフォルトSessionProfileを使用できます。ファクトリ・ベースの構成では、ファクトリに関するデフォルトSessionProfileを使用します。独自のデフォルトSessionProfileで構成されていないファクトリでは、アダプタに関するデフォルトSessionProfileを使用します。

たとえば、2つのRemoteAccessPointが構成されていて、default LocalAccessPointが使用され、セッションが構成されていない場合は、2つのデフォルト・セッションが作成されます。1つが最初に構成されているRemoteAccessPointに対して、もう1つが2番目に構成されているRemoteAccessPointに対して作成されます。いずれのセッションもデフォルト・セッション・プロファイルを使用します。

デフォルト・インポート

Oracle Tuxedoサービスまたはリソースが構成されていない場合でも、Tuxedo JCA Adapterでは、構成されたセッションを介してリモートのOracle Tuxedoサービスまたはリソースにアクセスできます。この機能は、デフォルト・インポートと呼ばれます。1つ以上の構成されたOracle Tuxedoサービスまたはリソースがある場合、この機能は自動的に無効にされ、構成されたOracle TuxedoサービスまたはリソースをターゲットとするリクエストのみをOracle Tuxedoに転送できます。

Tuxedo JCA Adapter構成で、Oracle Tuxedoサービスまたはリソースがインポートとして構成されていない場合、リクエスト・フィルタリングは実行されず、リクエストはすべて、サービス・リクエスト起動で指定された名前を使用してOracle Tuxedoに転送されます。複数のセッションが構成されている、またはTuxedo JCA Adapterによって暗黙に作成されている場合、サービス・リクエストはすべて、RoundRobinアルゴリズムによってそれらのセッションにロード・バランシングされます。

デフォルト・インポートが有効な場合、Tuxedo JCA Adapterは、接続済の任意のOracle Tuxedoアプリケーション・ドメインに対して構成されているすべてのセッションまたは暗黙的に作成されたデフォルト・セッションを介してすべてのOracle Tuxedoサービスまたはリソースにアクセスできます。

dmconfig構成

Tuxedo JCA Adapter構成ファイルは、リソース・アダプタ・デプロイメント記述子(ra.xml)内で「dmconfig」という名前のプロパティによって表されるXMLベースのファイルです。このプロパティ値は、構成ファイルへの絶対パスであるか、リソースarchive (RAR)ファイルのリソースとして表すことができます。クライアントとサーバーの本格的な動作が必要な場合は、この方式の構成を使用する必要があります。

リスト4に、Tuxedo JCA Adapterで「dmconfig」ファイルを使用する例を示します。この例では、構成ファイルへのフル・パス名は/home/work/adapter/dmconfig.xmlです。

リスト4 dmconfigのフル・パスの例
...
<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoResourceAdapter</   resourceadapter-class>
  <config-property>
     <config-property-name>dmconfig</config-property-name>
     <config-property-type>java.lang.String</config-property-type>
     <config-property-value>/home/work/adapter/dmconfig.xml</config-proper        ty-value>
  <config-property>
...

リスト5に、dmconfig.xmlというリソース・ファイル名を持つリソース・アーカイブの一部としてパッケージ化されているdmconfigファイルを使用するよう、Tuxedo JCA Adapterに指示する例を示します。ただし、アーカイブでこの構成リソース・ファイルが検出されない場合、現在の作業ディレクトリにある構成ファイルが使用されます。

リスト5 dmconfigアーカイブ
...
<resourceadapter>
   <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoResourceAdapter<    /resourceadapter-class>
<config-property>
   <config-property-name>dmconfig</config-property-name>
   <config-property-type>java.lang.String</config-property-type>
   <config-property-value>dmconfig.xml</config-property-value>
<config-property>
...

TuxedoConnectorルート要素

Tuxedo JCA Adapter構成ファイルには、TuxedoConnectorというルート要素が1つだけあります。複合タイプTuxedoConnectorTypeによって表されます。次の要素が含まれます(表4に示します)。

構成では、リスト6に示すように、<TuxedoConnector> およ</TuxedoConnector>タグを使用する必要があります。

リスト6 TuxedoConnectorタグの例
<?xml version="1.0" encoding="UTF-8"?>
<TuxedoConnector>
...
</TuxedoConnector>
リソース

Resources要素は、ResourceTypeで表され、リソース・アダプタ実行環境を指定します。Tuxedo JCA Adapter構成ファイルでは、Resource要素は1つのみ構成できます。表5に、ResourceType要素を示します。

表5 ResourceType要素
要素名
種類
オカレンス
説明
FieldTable16Classes
string
0..制限なし
FML用完全修飾フィールド表16クラス
FieldTable32Classes
string
0..制限なし
FML32用完全修飾フィールド表32クラス
ViewFile16Classes
string
0..制限なし
VIEW用完全修飾VIEW表16クラス
ViewFile32Classes
string
0..制限なし
VIEW32用完全修飾VIEW表32クラス
ApplicationPasswordEncrypted
string
0..1
Oracle Tuxedoアプリケーションを結合するためのアプリケーション・パスワード。パスワードは暗号化されます。
パスワード長は30文字以下で、Oracle Tuxedoと同じである必要があります。
TpusrFile
string
0..1
マルチバイト文字セットのエンコーディング名。
RemoteMBEncoding
string
0..1
TPUSRファイルのフル・パス名。
MBEncodingMapFile
string
0..1
エンコーディング・マップ・ファイルへのフル・パス名。

注意: ResourceType要素に対して定義されている属性はありませんが、RemoteAccessPointでは、TPUsrFile要素をTpusrFile要素でオーバーライドできます。

リスト7に、Resourcesの構成例を示します。

リスト7 Resources構成例
<Resources>
  <FieldTable16Classes>tuxedo.test.fml16.FieldTbl16</FieldTable16Classes>
  <ViewFile32Classes>tuxedo.test.simpapp.View32</ViewFile32Classes>
  <ApplicationPasswordEncrypted>tuxpassword</ApplicationPasswordEncrypted>
</Resources>

ApplicationPassowrdEncryptedが構成されている場合、付属ユーティリティcom.oracle.tuxedo.tools.DMConfigCheckerを実行して、パスワードを暗号化し、また、オプションでキー・ストアを生成する必要があります。この場合、keyFileNameは、有効なキー・ストア・ファイルまたはキー・ストア・リソースを参照している必要があります。リソース・アダプタ・デプロイメント記述子でkeyFileNameが構成されていないと、Tuxedo JCA Adapterがパスワードを復号化できません。

リスト8に、キー・ストア・リソースが構成されていることをTuxedo JCA Adapterに通知する例を示します。

リスト8 キー・ストア・リソース例
...
<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoResourceAdapter</   resourceadapter-class>
  <config-property>
     <config-property-name>dmconfig</config-property-name>
     <config-property-type>java.lang.String</config-property-type>
     <config-property-value>dmconfig.xml</config-property-value>
  <config-property>
  <config-property>
     <config-property-name>keyFileName</config-property-name>
     <config-property-type>java.lang.String</config-property-type>
     <config-property-value>foo.key</config-property-value>
  <config-property>
...
ローカル・アクセス・ポイント

ローカル・アクセス・ポイント要素は、LocalAccessPointTypeで表されます。この要素は、リスニング・アドレスと予定されるリンクレベルのフェイルオーバー・アドレスを指定します。表6に、LocalAccessPointType要素を示します。

表6 LocalAccessPointType要素
要素名
種類
オカレンス
説明
AccessPointId
string
0..1
接続プリンシパル名。グローバルに一意である必要があります。

注意: 「グローバルに一意」とは、構成で指定されているIDが、Oracle Tuxedo GWTDOMAINゲートウェイ、WebLogicサーバーWTCおよびTuxedo JCA Adapterを介して相互接続されているすべてのOracle Tuxedoドメインおよびアプリケーション・サーバーの範囲内で一意である必要があることを意味します。

指定されない場合、ローカルに一意のLocalAccessPointのname属性値を使用します(リスト9を参照)。
NetworkAddress
string
1..制限なし
ホスト・アドレスとポート番号を両方とも含むローカル・アクセス・ポイント・リスニング・アドレス。TCP/IPアドレスを、//hostname:portまたは//#.#.#.#:portという形式で指定します。
SSLInfo
complexType
0..制限なし
SSL暗号化を使用して通信を安全にするかどうかを指定します。構成しない場合、LLEが使用されます。

SSLInfo要素は、匿名の複合タイプです。構成に含まれている場合、その要素をすべて構成する必要があり、トランスポート・メカニズムとしてSSLが使用されます。含まれていない場合、トランスポート・メカニズムとしてTCP/IPが使用され、暗号化が必要ならリンク・レベルの暗号化を使用してデータの機密性を確保します。表7に、SSLInfo要素を示します。

表7 SSLInfo要素
要素名
種類
オカレンス
説明
MutualAuthenticationRequired
ブール
0..1
SSL通信でクライアント認証が必要かどうかを指定します。デフォルト値はfalseです。
IdentityKeyStoreFileName
string
1..1
完全なIDキー・ストア・ファイルのパス名。
IdentityKeyStorePassPhraseEncrypted
string
1..1
IDキー・ストアを暗号化するために使用されるパスワード。
PrivateKeyAlias
string
1..1
秘密鍵を取得するために使用したIDキー・ストア内の別名。
PrivateKeyPassPhraseEncrypted
string
1..1
IDキー・ストアで秘密鍵を復号するために使用される暗号化パスワード。
TrustKeyStoreFileName
string
1..1
完全な信用キー・ストア・ファイルのパス名。
TrustKeyStorePassPhraseEncrypted
string
1..1
証明書を取得するときに、信頼キー・ストアを復号するために使用されるパスフレーズ。

name属性は、LocalAccessPointTypeに対して定義されます。この属性は、LocalAccessPointTypeで表される構成レコードの識別に使用されます。また、リスト9で示されるように、この属性はローカルで一意のローカル・アクセス・ポイント名を指定します。

リスト9 LocalAccessPointのname属性

<LocalAccessPoint name="LDOM1">
  <LocalAccessPointId>Godfried</LocalAccessPointId>
  <NetworkAddress>//neocortex:14001</NetworkAddress>
</LocalAccessPoint>

LDOM1は、ローカルに一意である必要があります。Gotfriedは、グローバルに一意である必要があります。AccessPointId要素が指定されない場合、name属性の値はAccessPointIdとして使用されます。このシナリオでは、name属性の値は、グローバルに一意である必要があります。

デフォルトで、SSLはサーバー(接続リクエストの応答側)を認証するだけです。クライアント認証を有効化するには、MutualAuthenticationRequired要素をtrueに設定する必要があります。

リモート・アクセス・ポイント

リモート・アクセス・ポイント要素は、RemoteAccessPointTypeで表されます。この要素は、リモートOracle Tuxedoドメイン・アクセス・ポイントのネットワーク・アドレスを定義します。表8に、RemoteAccessPointType要素を示します。

表8 RemoteAccessPointType要素
要素名
種類
オカレンス
説明
AccessPointId
string
0..1
リモートのTuxedoアクセス・ポイントとのセッションを確立しようとするときに、このリモート・アクセス・ポイントを識別するために使用される接続プリンシパル名として、デフォルトで使用されます。グローバルに一意である必要があります。

注意: 「グローバルに一意」とは、構成で指定されているIDが、Oracle Tuxedo GWTDOMAINゲートウェイ、WebLogicサーバーWTCおよびTuxedo JCA Adapterを介して相互接続されているすべてのOracle Tuxedoドメインおよびアプリケーション・サーバーの範囲内で一意である必要があることを意味します。

指定されない場合、ローカルに一意のRemoteAccessPointのname属性値を使用します(リスト10を参照)。
NetworkAddress
string
1..制限なし
リモートのOracle Tuxedoアクセス・ポイントのホスト・ネットワーク・アドレスとポート番号。TCP/IPアドレスを、//hostname:portまたは//#.#.#.#:portという形式で指定します。
TpusrFile
string
0..1
このリモート・アクセス・ポイントに対するTPUSRファイルへのフル・パス名。
AllowAnonymous
ブール
0..1
値セット
{true, false}
リモートのOracle Tuxedoアクセス・ポイントで、匿名アクセスが許容されるかどうかを示します。デフォルト値はfalseです。
DefaultApplicationKey
string
0..1
リモートのOracle Tuxedoアクセス・ポイントのデフォルト・アプリケーション・キー値。指定されない場合、-1と想定されます。
CustomApplicationKey
string
0..1
カスタム・アプリケーション・キー・ジェネレータを構成します。指定されない場合、デフォルトのアプリケーション・キー・ジェネレータが使用されます。

CustomApplicationKey要素は、匿名の複合タイプです。指定しない場合、デフォルトのアプリケーション・キー・プラグインが使用されます。指定する場合、そのすべての要素を構成する必要があり、このリモート・アクセス・ポイントと通信するすべてのセッションに対して、CustomApplicationKeyプラグイン・クラスがロードされます。表9に、CustomApplicationKey要素を示します。

表9 CustomApplicationKey要素
要素名
種類
オカレンス
説明
ApplicationKeyClass
string
1..1
完全修飾アプリケーション・キー・ジェネレータ・クラス名。
ApplicationKeyClassParam
string
1..1
実行時に初期化される場合に、アプリケーション・キー・ジェネレータに渡されるパラメータ文字列

name属性は、RemoteAccessPointに対して定義されます。この属性は、ローカルで一意なリモート・アクセス・ポイント名を指定します。リスト10は、RemoteAccessPointTypename属性の例を示します。

リスト10 RemoteAccessPointのname属性の例
<RemoteAccessPoint name="RDOM1">
  <AccessPointId>Geneve</AccessPointId>
  <NetworkAddress>//bluestar:11023</NetworkAddress>
  <TpusrFile>/tja/lady-geneve/tpusr</TpusrFile>
</RemoteAccessPoint>

RDOM1は、ローカルに一意である必要があります。Geneveは、グローバルに一意である必要があります。AccessPointId要素が指定されない場合、name属性の値はAccessPointIdとして使用されます。このシナリオでは、name属性の値は、グローバルに一意である必要があります。

セッション・プロファイル

セッション・プロファイル要素は、SessionProfileTypeで表されます。Tuxedo JCA Adapterローカル・アクセス・ポイントとOracle Tuxedoリモート・アクセス・ポイントの間のTDOMAINセッションに関するすべてのQoSパラメータを含みます。表10に、SessionProfileType要素を示します。

表10 SessionProfileType要素
要素名
種類
オカレンス
説明
Security
string
0..1
値セット
{NONE, APP_PW, DM_PW}
/Domain認証のタイプが必要です。デフォルト値はNONEです。
BlockTime
int
0..1
値の範囲
0..2147483647
このプロファイルを使用するブロッキング・アウトバウンド・リクエストで許容される最大ミリ秒数。デフォルト値は60000です。
Interoperate
ブール
0..1
値セット
{true, false}
セッションがリモートのTuxedo 6.5リリースGWTDOMAINゲートウェイとの相互運用を許容されているかどうかを指定します。デフォルト値はfalseです。
ConnectionPolicy
string
0..1
値セット
{ON_DEMAND,
ON_STARTUP,
INCOMING_ONLY}
このGWTDOMAINセッションが確立される条件。デフォルト値はON_DEMANDです。
ACLPolicy
string
0..1
値セット
{LOCAL, GLOBAL}
このGWTDOMAINセッション上で強制適用されるACLポリシー。デフォルト値はLOCALです。
CredentialPolicy
string
0..1
値セット
{LOCAL, GLOBAL}
ユーザー資格証明通知ポリシー。値がLocalの場合、通知はありません。デフォルト値はLOCALです。
RetryInterval
long
0..1
値の範囲
0..2147483647
セッションが自動接続確立試行を繰り返す間隔の秒数。この要素値は、ConnectionPolicyON_STARTUPに設定されている場合にのみ設定します。
MaxRetries
long
0..1
値の範囲
0..922372063857758
Tuxedo JCA AdapterがリモートのOracle Tuxedoアクセス・ポイントにセッション接続の確立を試行する回数の最大値。この要素は、ConnectionPolicyON_STARTUPに設定される場合にのみ設定します。デフォルト値は922337206385775807です。
CompressionLimit
int
0..1
値の範囲
0..2147483647
データをリモートのOracle Tuxedoアクセス・ポイントに送信する場合にセッションが使用する圧縮しきい値。このサイズより大きなアプリケーション・バッファは、圧縮されます。デフォルト値は2147483647です。
MinEncryptBit
string
0..1
値セット
{"0", "40", "56", "128", "256"}
セッションがセッション接続を確立した後に使用する暗号化キーの最小長(単位はビット)。値0は、このプロファイルを使用してセッションを作成したTuxedo JCA Adapterで暗号化が許可されていないことを示します。キー強度256ビットは、単にSSLをサポートするためです。デフォルト値は0です。
MaxEncryptBit
string
0..1
値セット
{"0", "40", "56", "128", "256"}
セッションがセッション接続を確立した後に使用する暗号化キーの最大長(単位はビット)。値0は、このプロファイルを使用してセッションを作成したTuxedo JCA Adapterで暗号化が不要であることを示します。キー強度256ビットは、単にSSLをサポートするためです。デフォルト値は128です。指定する値は、MinEncryptBitで指定した値以上にする必要があります。
KeepAlive
long
0..1
値の範囲
{0..2147483647}
GWTDOMAINセッションでアプリケーション・レベルのキープ・アライブが構成されているかどうか、およびその場合に待機タイマーが計時を開始するまでの最大アイドル・タイムを指定します。単位はミリ秒です。デフォルト値は0です(これはKeepAlive機能が無効であるということです)。
KeepAliveWait
long
0..1
値の範囲
{0..2147483647}
セッションがアプリケーション・レベルのキープ・アライブ確認を必要とするかどうか、確認を受信できない場合、どれくらいの時間待機してから、接続にアクセスできないと宣言するかを指定します。単位はミリ秒です。デフォルト値は0です(これはKeepAlive確認が無視されることを意味します。ただしKeepAlive機能が無効の状態で、このプロファイルを使用してセッションが作成されている場合、この構成情報は無視されます)。

name属性は、SessionProfileTypeに対して定義されます。この属性は、適切なセッション・プロファイルを取得するためにセッション・オブジェクトによって使用されます。リスト11は、SessionProfileTypename属性の例を示します。

リスト11 SessionProfileのname属性の例
<SessionProfile name="profile1">
  <Security>DM_PW</Security>
  <ConnectionPolicy>ON_STARTUP</ConnectionPolicy>
  <ACLPolicy>Global</ACLPolicy>
  <CredentialPolicy>Global</CredentialPolicy>
  <RetryInterval>100</RetryInterval>
</SessionProfile>
セッション

セッション要素は、SessionTypeで表されます。それは、ローカル・アクセス・ポイントとリモート・アクセス・ポイントの間の、許容される接続を指定します。ローカル・アクセス・ポイントとリモート・アクセス・ポイントの間には、1つのセッションだけを構成できます。表11に、SessionType要素を示します。

表11 SessionType要素
要素名
種類
オカレンス
説明
LocalAccessPointName
string
1..1
TDOMAINセッションを構成するために使用されるローカル・アクセス・ポイント。このLocalAccessPointは、LocalAccessPoint要素のname属性を参照します。
RemoteAccessPointName
string
1..1
TDOMAINセッションを構成するために使用されるリモート・アクセス・ポイント。このLocalAccessPointは、LocalAccessPoint要素のname属性を参照します。
ProfileName
string
0..1
セッションに対して使用されるプロファイル。指定されない場合、アダプタに関するデフォルトのセッション・プロファイルを使用します。
PasswordPair
complexType
0..2
SECURITYDM_PWに等しいときに、セッションを認証するために使用されるパスワード・ペア。

PasswordPair要素は、匿名の複合タイプです。最大で2つのパスワード・ペアを構成できます。これにより、Oracle Tuxedoドメイン・セッション認証のパスワードを構成できるようになります。表12に、PasswordPair要素を示します。

表12 PasswordPair要素
要素名
種類
オカレンス
説明
LocalPasswordEncrypted
string
1..1
暗号化されたローカル・パスワード。パスワードの長さは30文字までです。
RemotePasswordEncrypted
string
1..1
暗号化されたリモート・パスワード。パスワードの長さは30文字までです。
ActivationTime
string
0..1
パスワード・ペアがいつ有効になるかを示すために使用される日付と時刻の文字列。指定しない場合、すでに有効とみなされます。書式はYYYY:MM:DD:hh:mm:ssです。
DeactivationTime
string
0..1
パスワード・ペアがいつ廃止になるかを示すために使用される日付と時刻の文字列。指定しない場合、永久に期限切れにならないとみなされます。書式はActivationTimeと同じです。

name属性は、SessionTypeに対して定義されます。この属性は、TDOMAINセッションの識別に使用されます。リスト12は、SessionTypename属性の例を示します。

リスト12 SessionTypeのnameの例
<Session name="session1_1">
  <LocalAccessPointName>LDOM1</LocalAccessPointName>
  <RemoteAccessPointName>RDOM1</RemoteAccessPointName>
  <ProfileName>profile1</ProfileName>
</Session>

セッションが構成されない場合、Tuxedo JCA Adapterはデフォルトで、すべてのローカル・アクセス・ポイントとすべてのリモート・アクセス・ポイントの間にセッションを作成します。これらの動的に作成されたセッションは、デフォルトのセッション・プロファイルのみ使用できます。

インポート

インポート要素は、ImportTypeで表されます。この要素は、Tuxedo JCA Adapterクライアントによってアクセスされる既存のリモートTuxedoアプリケーション・ドメイン・リソースを識別します。表13に、ImportType要素を示します。

表13 ImportType要素
要素名
種類
オカレンス
説明
RemoteName
string
0..1
Oracle Tuxedo TDomainゲートウェイによりエクスポートされる、実際のリモートOracle Tuxedoリソース名。指定しない場合、name属性と同じ値を持ちます。
SessionName
string
1..制限なし
リソースをリモートのOracle Tuxedoアプリケーション・ドメインからインポートするセッションの名前。
LoadBalancing
string
0..1
値セット
{RoundRobin, Random}
インポートされたリソースに対して使用されるロード・バランシング・アルゴリズム。デフォルト値はRoundRobinです。

nameautotranおよびtrantimeの、3つの定義済の属性があります。

エクスポート

エクスポート要素は、ExportTypeで表されます。この要素は、リモートOracle Tuxedoアプリケーション・ドメインからアクセス可能なローカル・リソースです。表14に、ExportType要素を示します。

表14 ExportType要素
要素名
種類
オカレンス
説明
RemoteName
string
0..1
Oracle Tuxedoアプリケーションがアプリケーション・サーバーのサービスにアクセスするときに使用するリソース名。指定しない場合、name属性と同じ値を持ちます。
SessionName
string
1..制限なし
このローカル・リソースへのアクセスを許可するセッション。
Type
string
0..1
値セット
{EJB,POJO,MDB}
リソースのタイプ。デフォルトはEJBです。
Source
string
1..1
これはEJB用のJNDI名(tuxedo.services.TolowerEJBHomeなど)、POJOのターゲット・クラス(com.abc.test.MyTolowerなど)またはMDB用のJNDI名(is/echoなど)です。指定する必要があります。
SourceLocation
string
0..1
これは、POJOのターゲットJARです。エクスポート・タイプがEJBまたはMDBの場合、この値は無視されます。

name属性は、ExportTypeに対して定義されます。この属性は、エクスポートされたリソースの識別に使用されます。リスト14は、ExportType nameの例を示します。

リスト14 ExportTypeのnameの例
<Export name="tolower">
   <SessionName>session1</SessionName>
   <RemoteName>wtolower</RemoteName>
   <Type>EJB</Type>
   <Source>tuxedo.services.TolowerEJBHome</Source>
</Export>

リソース・アダプタ・デプロイメント記述子ベースの構成

デプロイメントのためにリソース・アーカイブをデプロイし、再パッケージするために使用される主要コンポーネントは、リソース・アダプタ・デプロイメント記述子(META-INFディレクトリのra.xmlファイル)です。リソース・アダプタ・デプロイメント記述子は、リソースをリソース・アーカイブに再パッケージする前に、構成する必要があります。

このXMLベースのテキスト・ファイルは、テキスト・エディタまたはXMLエディタで編集できます。ダウンロードしたTuxedo JCA Adapterには、Tuxedo JCA Adapterデプロイメントの構成を支援する、簡易版のデプロイメント記述子が含まれます。

デプロイメント記述子ベースの構成の場合、デプロイメント記述子ファイル(ra.xml)を使用して、Tuxedo JCA Adapterデプロイメントの構成を指定する必要があります。構成を指定するための一連のカスタム・プロパティが存在します。この方法で指定されるすべてのプロパティは、スコープがアダプタ単位になります。

リソース・アダプタ・デプロイメント記述子のプロパティ

デプロイメント記述子ベースの構成スタイルは、標準の単純なプロパティ・タイプ、config-property-nameconfig-property-typeおよびconfig-property-valueに基づいています。これらのプロパティ・タイプは繰り返せません。これらは、リソース・アダプタ・デプロイメント記述子「resourceadapter」ファイルのリソース・アダプタ・セクションで使用できます。

リソース・アダプタ・デプロイメント記述子構成メソッドは、次のタイプのプロパティをサポートします。

リソース関連のプロパティ

dmconfigファイルで指定される大部分のリソース要素は、デプロイメント記述子ベースの構成で使用できます。

表15に、リソース・アダプタ・デプロイメント記述子のResourcesプロパティを示します。

表15 Resourcesプロパティ
プロパティ
種類
デフォルト値
説明
fieldTable16Classes
String
なし
FML用のフィールド表16クラス。コンマで区切られたリストです。
fieldTable32Classes
String
なし
FML32用のフィールド表32クラス。コンマで区切られたリストです。
viewFile16Classes
String
なし
VIEW用のVIEW表16クラス。コンマで区切られたリストです。
viewFile32Classes
String
なし
VIEW32用のVIEW表32クラス。コンマで区切られたリストです。
tpusrFile
String
なし
TPUSRファイルへのフル・パス名。
remoteMBEncoding
String
なし
Oracle Tuxedoが使用するマルチ・バイト・エンコーディング。
mBEncodingMapFile
String
なし
エンコーディング・マップ・ファイルへのフル・パス名。

リスト15に、リソース・アダプタ・デプロイメント記述子ベースのカスタム・プロパティ構成を使用した、2つのVIEW32クラス情報を記述する構成の例を示します。

注意: これにより、Tuxedo JCA Adapterは、SYSTEM CLASSPATHを介してアクセスできるフル・パッケージ名で、viewFile32Classesを使用できます。
リスト15 ra.xmlファイルVIEW32カスタム・プロパティの構成

<config-property>
  <config-property-name>viewFile32Classes<config-property-name>
  <config-property-type>java.lang.String</config-property-type>
  <config-property-value>tuxedo.view32.view1,tuxedo.view32.view2
   </config-property-value>
</config-property>
ローカル・アクセス・ポイント関連のプロパティ

LocalAccessPointタイプの要素の大部分は、リソース・アダプタ記述子ベースの構成では使用できませんが、単一のlocalAccessPointSpecを指定することはできます。

表16に、リソース・アダプタ・デプロイメント記述子のLocalAccessPointプロパティを示します。

表16 LocalAccessPointプロパティ
プロパティ
種類
デフォルト値
説明


localAccessPointSpec



String



「なし」
構文:
//<network address>:<port>/domainId=<domain id>
ドメインIDは、デフォルトで接続プリンシパル名として使用されます。グローバルに一意である必要があります。
identityKeyStoreFileName

String

「なし」
IDキー・ストア・ファイル名のフル・パス名。
privateKeyAlias

String

「なし」
秘密鍵を取得するために使用されるIDキー・ストア内の別名。
trustedKeyStoreFileName

String

「なし」
信頼キー・ストア・ファイル名のフル・パス名。

localAccessPointSpecプロパティは任意です。非クラスタ環境で指定されるとき、このプロパティはリソース・アダプタ・デプロイメント記述子ファイル内の全構成情報を求める場合に有効です。ただし、構成がすべてのクラスタ・ノードにコピーされるクラスタ環境でこのプロパティが指定されるとき、すべてのTuxedo JCA Adapterは同一のアクセス・ポイントIDを持ちます。この場合には、接続の振る舞いが予測できなくなるため、サポートされません。デフォルト・セッション、およびデフォルトSessionProfileのみ使用できます。

このようなクラスタ環境の問題を解決するため、環境は一切構成しないでください(この場合、default LocalAccessPointがUUIDベースのLocalAccessPointIdを使用して作成されます)。このUUIDベースのLocalAccessPointIdは、現在の作業ディレクトリ内の.lapidという名前のファイルに書き込まれます。

リスト16に、localAccessPointSpecのカスタム構成の例を示します。

リスト16 LocalAccessPointカスタム・プロパティの構成例
<config-property>
   <config-property-name>localAccessPointSpec</config-property-name>
   <config-property-type>java.lang.String<config-property-type>
   <config-property-value>//localhost:12345/domainId=jdom_id
   </config-property-value>
</config-property>

この例では、AccessPointNameと、jdom_idと等しいAccessPointIdを持つLocalAccessPointが作成されることを示しており、ローカル・ホスト上のport12345に着信する接続リクエストをリスニングしています。

default LocalAccessPointが作成される場合、可能な接続ポリシーはON_STARTUPだけです。リスニング・エンド・ポイントは作成されません。

default LocalAccessPointがTuxedo JCA Adapterによって動的に構築される場合、リスニング・エンド・ポイントはなく、クライアント側専用の動作モードになります。接続リクエストは着信できません。

SSL/TLSも、IDとキー・ストアに関連する3つのプロパティを使用して、リソース・アダプタ・デプロイメント記述子を介してサポートされます。ただし、次の2つの制限事項があります。

この制限を望まない場合、異なる振る舞いが必要なすべてのノードのリソース・アダプタ・デプロイメント記述子を変更するか、またはdmconfigメソッドを使用してクラスタリングされたTuxedo JCA Adapterを構成するかのいずれかを実行する必要があります。

RemoteAccessPoint関連のプロパティ

RemoteAccessPointは、ネットワーク・アドレスとRemoteAccessPoint アクセスごとの制御関連情報の両方を含むテキスト文字列で表されます。ただし、リソース・アダプタ・デプロイメント記述子のプロパティ・ベースの構成では、1つのremoteAccessPointSpecプロパティで表されます。表17に、リソース・アダプタ・デプロイメント記述子のRemoteAccessPoint関連プロパティを示します。

表17 RemoteAccessPointプロパティ
プロパティ
種類
デフォルト値
説明
remoteAccessPointSpec
String
なし
これには、NetworkAddressと、AccessPointIdにname属性を付加したものの両方が含まれます。これは、RemoteAccessPointのコンマ区切りリストです。各エントリのdomainIdは、AccessPointIdを置換するために使用されます。
このdomainIdは、デフォルトで、リモートのTuxedoアクセス・ポイントとのセッションを確立するときにリモート・アクセス・ポイントを識別するために使用される接続プリンシパル名として使用されます。指定されない場合は、デプロイメント記述子ベースの構成ではエラーとなるので、名前はグローバルで一意である必要があります。
rapAllowAnonymous
ブール
{true, false}
リモートのTuxedoアクセス・ポイントで、匿名アクセスが許容されるかどうかを示します。デフォルト値はfalseです。
rapDefaultApplicationKey
String
任意の有効なTuxedoアプリケーション・キー。
Oracle Tuxedoアクセス・ポイントのデフォルト・アプリケーション・キー値。指定されない場合、-1と想定されます。
rapApplicationKeyClass
String
なし
カスタム・アプリケーション・キー・ジェネレータの完全修飾クラス名。指定しない場合、デフォルトのアプリケーション・キー・ジェネレータが使用されます。
rapApplicationKeyClassParam
String
なし
クラスが実行時に初期化される場合に、カスタム・アプリケーション・キー・ジェネレータに渡されるパラメータ文字列

remoteAccessPointSpecプロパティは、各リモート・アクセス・ポイントがコンマで区切られたリストになります。各リモート・アクセス・ポイントは、固有の書式で表されます。

プロパティrapApplicationKeyClassを指定しない場合、rapApplicationKeyClassParamは、構成されていても無視されます。

リンク・レベル・フェイルオーバーをサポートするために、カッコを使用して、RemoteAccessPointごとにフェイルオーバー・アドレスがグループ化されます。グループ内で最初に指定されるアドレスがプライマリ・アドレスになります。グループの第2のアドレスは第1のアドレスのバックアップで、グループの第3のアドレスは第2のアドレスのバックアップ、以下同様です。

リスト17は、2つのRemoteAccessPointを構成する例です。1番目は、ドメインguinevreを介して、ネットワーク・アドレス//bluestar:11023でアクセスできます。2番目は、ドメインgalahadを介してネットワーク・アドレス//orion:37456でアクセスできます。

リスト17 RemoteAccessPointカスタム・プロパティの構成例
<config-property>
  <cofig-property-name>remoteAccessPointSpec</config-property-name>
  <config-property-type>java.lang.String</config-property-type>
  <config-property-value>//bluestar:11023/domainId=guinevre,//orion:37456/   domainId=galahad</config-property-value>
</config-property>

リモート・ドメインguinevregalahadには、同一のQoSが関連付けられています。この場合、rapApplicationKeyClassおよびrapApplicationKeyClassParamが指定されると、それらがRemoteAccessPoint guinevregalahadの両方で利用できるかのように扱われます。rapApplicationKeyClassを両方のRAPで同じ完全修飾クラス・パスを使用して利用できるようにする必要があります。そうしないと、Tuxedo JCA Adapterを開始できません。

リスト18は、フェイルオーバー・アドレスを持つ2つのRemoteAccessPointを構成する例です。1番目は、ドメインguinevreを介して、プライマリ・ネットワーク・アドレス//bluestar:11023、バックアップ・ネットワーク・アドレス//orion:12345でアクセスできます。

2番目は、ドメインgalahadを介してネットワーク・アドレス//orion:37456、バックアップ・ネットワーク・アドレス//bluestar:37456でアクセスできます。

リスト18 RemoteAccessPointカスタム・プロパティの構成例
<config-property>
  <config-property-name>remoteAccessPointSpec</config-porperty-name>
  <config-property-type>java.lang.String</config-property-type>
  <config-property-value>(//bluestar:11023,//orion:12345)/domainId=guinevr   e,(//orion:37456,//bluestar:37456)/domainId=galahad
   </config-property-value>
</config-property>

リソース・アダプタ・デプロイメント記述子ファイルに指定できるremoteAccessPointSpecプロパティは1つのみです。複数構成されている場合、アプリケーション・サーバーのJCAコンテナは、最後に構成されたものだけを引き受けます。

デフォルトRemoteAccessPointがありません。remoteAccessPointSpecプロパティが構成されないと、動的に作成されたRemoteAccessPointは存在しません。このため、Tuxedo JCA Adapterは、起動できますが役に立ちません。

remoteAccessPointSpecプロパティを介してRemoteAccessPointを構成するには、リソース・アダプタ・デプロイメント記述子ファイル内で、resourceadapter-class要素が、com.oracle.tuxedo.adapter.TuxedoClientSideResourceAdapterクラスを使用して構成されている必要があります。

SessionProfile関連のプロパティ

セッション・プロファイルに含まれる情報は、一連の構成プロパティによって表されます。Tuxedo JCA Adapterローカル・アクセス・ポイントとOracle Tuxedoリモート・アクセス・ポイントの間のTDOMAINセッションに関するすべてのQoSパラメータを含みます。

表18に、リソース・アダプタ・デプロイメント記述子のSessionProfileプロパティを示します。

表18 SessionProfileプロパティ
プロパティ
種類
デフォルト値
説明
spBlockTime
整数
0..2147483647
このプロファイルを使用するブロッキング・アウトバウンド・リクエストで許容される最大ミリ秒数。デフォルト値は60000ミリ秒です。これは、CCIのInteractionSpec.setExecutionTime()メソッドを呼び出だすとオーバーライドできます。
spInteroperate
ブール
{true, false}
このセッションがリモートのTuxedo 6.5リリースGWTDOMAINゲートウェイとの相互運用を許容されているかどうかを指定します。デフォルト値はfalseです。
spCredentialPolicy
String
{LOCAL, GLOBAL}
ユーザー資格証明通知ポリシー。LOCALに設定されている場合、通知はありません。デフォルト値はLOCALです。
spRetryInterval
Long
0..2147483647
セッションが自動接続確立試行を繰り返す前に待機する秒数。デフォルト値は60です。
spMaxRetries
Long
0..922337206385775807
このセッションがリモートのOracle Tuxedoアクセス・ポイントへのセッション接続を確立しようとする回数の最大値。デフォルト値は922337206385775807です。
spCompressionLimit
整数
0..2147483647
ユーザー・データをリモートのOracle Tuxedoアクセス・ポイントに送信する場合に、すべてのセッションで使用される圧縮しきい値。このサイズより大きなアプリケーション・バッファは、圧縮されます。
デフォルト値は21474483647です。
spMinEncryptBits
String
{"0","40","56","128","256"}
セッション接続を確立した後にすべてのセッションで使用される暗号化キー長の最小値(単位はビット)。値「0」は、暗号化不要である可能性があることを示します。値「256」は接続タイプがSSLの場合に使用します。
デフォルト値は「0」です。
spMaxEncryptBits
String
{"0","40","56","128","256"}
セッション接続を確立した後にすべてのセッションで使用される暗号化キー長の最大値(単位はビット)。値「0」は、暗号化が必要でないことを示します。値「256」は接続タイプがSSLの場合に使用します。
デフォルト値は「128」です。
spKeepAlive
Long
{0..2147483647}
すべてのセッションでアプリケーション・レベルのキープ・アライブが構成されているかどうかと、その場合に待機タイマーが計時を開始するまでのアイドル・タイムの最大値を指定します。デフォルト値は「0」で、アプリケーション・レベルのキープ・アライブが無効であることを意味します。単位はミリ秒です(実行時に秒単位に切り上げられます)。
接続がビジーの場合、リモート・ゲートウェイに特別なキープ・アライブ・メッセージを送信する必要はありません。ただし、指定された時間が経過しても接続上にアクティビティがない場合、特別なキープ・アライブ・メッセージを送信して、spKeepAliveWaitタイマー(この場合も秒単位に切り上げ)を開始します。この「待機」時間が経過しても確認を受信できない場合、接続が失効していると宣言して、接続をクローズし、セッションを終了します。
spKeepAliveWait
Long
{0..2147483647}
このセッションでアプリケーション・レベルのキープ・アライブの確認が必要かどうか、および、確認を受信しないままどれくらいの時間が経過したときに、接続をアクセス不可と宣言するかを指定します。デフォルト値は10です。単位はミリ秒です。値が「0」の場合、待機タイマーは無効です。

リスト19に、SessionProfileの構成例を示します。

リスト19 SessionProfileカスタム・プロパティの構成例
< config-property>
  <config-property-name>spBlockTime</config-property-name>
  <config-property-type>java.lang.Integer</config-property-type>
  <config-property-value>120000</config-property-value>
</config-property>

リソース・アダプタ・デプロイメント記述子ファイル内で構成されている、すべてのSessionProfile関連プロパティは、デフォルトSessionProfileの構造で使用されます。

インポート関連のプロパティ

リソース・アダプタ・デプロイメント記述子ファイル・ベースの構成は、デフォルトのインポートを使用しますが、アダプタからリモートのTuxedoアプリケーション・ドメインにアクセスできるものを統一的に制限する機能もあります。単一のimpResourceNameプロパティに、アクセスできるリモートのOracle Tuxedoサービス/リソースのコンマ区切りリストを指定できます。適用される1つの制限は、これらは、実行可能なすべてのセッションに適用されるということです。

LoadBalancingアルゴリズムはRoundRobinに初期設定されており、変更できません。impResourceNameを指定すると、Tuxedo JCA Adapterはデフォルトのインポートを作成しません。

表19に、リソース・アダプタ・デプロイメント記述子のインポート関連のプロパティを示します。

表19 インポート関連のプロパティ
プロパティ
種類
デフォルト値
説明
impResourceName
String
コンマ区切りリストに格納されたすべての有効なTuxedoリソース名。
有効なOracle Tuxedoのサービス名またはキュー名。ワイヤ・プロトコルのnameトランザクションが、ありません。これは、基本的にdmconfigファイルにおけるインポートのRemoteName属性と同じです。

リスト20に、使用可能なリモートのOracle TuxedoリソースをToupper_1ECHOに制限するimpResourceNameの例を示します。このプロパティは、リソース・アダプタ・デプロイメント記述子ベースの構成に限定されているため、resourceadapter-classを、TuxedoClientSideResourceAdapterクラスを使用して構成する必要があります。

リスト20 impResourceNameの例
<config-property>
 <config-property-name>impResourceName</config-property-name>
 <config-property-type>java.lang.String</config-property-name>
 <config-property-value>TOUPPER_1,ECHO</config-property-value>
</config-property>

セッション

リソース・アダプタ・デプロイメント記述子カスタム・プロパティ構成メソッドには、セッション関連のプロパティが定義されていません。リソース・アダプタ・デプロイメント記述子ベースの構成が使用されているか、dmconfigファイル内にSessionが構成されていない場合、すべてのローカル・アクセス・ポイントとすべてのリモート・アクセス・ポイントの間に、セッションが暗黙のうちに作成されます。これは、「デフォルト・セッション」と呼ばれます。デフォルト・セッションが使用される場合、デフォルトSessionProfileのみ使用できます。

たとえば、2つのRemoteAccessPoint要素が構成され、default LocalAccessPointが使用され、セッションが構成されていない場合、2つのデフォルト・セッションが作成されます。

エクスポート

リソース・アダプタ・デプロイメント記述子カスタム・プロパティ構成メソッドには、エクスポート関連のプロパティは定義されていません。Oracle Tuxedoアプリケーション・ドメインからJavaアプリケーション・サーバーへのインバウンド・リクエストをサポートするデフォルト・エクスポートはありません。また、これは3つの構成スタイルのすべてに該当します。

ファクトリ・ベースの構成

ファクトリ・ベースの構成は、リソース・アダプタ・デプロイメント記述子ベースの構成に類似しています。どちらもカスタム・プロパティを使用してTuxedo JCA Adapterを構成します。この2つの方式の違いは、ファクトリ・ベースの構成では接続ファクトリのカスタム・プロパティを構成する点にあります。ファクトリ・ベースの構成を使用すると、より大きなカスタム・プロパティ・セットを使用してより最適な構成ができるようになります。

ファクトリ・ベースの構成には、2つの主要な部分があります。片方はアダプタに関するプロパティで、カスタム・プロパティを使用して、デプロイメント記述子ファイルのresourceadapterで構成する必要があります。もう一方はファクトリに関するプロパティで、Javaアプリケーション・サーバーごとに異なる方法で構成できます。WebSphereの場合は、J2C接続ファクトリのカスタム・プロパティのページを介して構成され、WebLogicの場合は、weblogic-ra.xml内で構成されます。

通常はTuxedo JCA Adapterをインストール後に構成します。リソース・アダプタ・デプロイメント記述子を構成した後で、カスタム・ファクトリのプロパティを構成します。

リソース・アダプタ・デプロイメント記述子内のプロパティ

ResourceAdapterデプロイメント記述子にはカスタム・プロパティ一式があり、ファクトリ-ベース構成がサポートしています。それが存在するのは、すべてアダプタに関するプロパティだからです。

これらのプロパティは、標準の単純なプロパティ・タイプ、config-property-nameconfig-property-typeおよびconfig-property-valueに基づいています。これらのプロパティ名は繰り返せません。これらは、リソース・アダプタ・デプロイメント記述子のresourceadapterで使用できます。

ファクトリ・ベースの構成のためのリソース・アダプタ・デプロイメント記述子カスタム・プロパティは、次のタイプのプロパティをサポートします。

アダプタに関するプロパティ

リソース関連のプロパティ

アダプタに関するプロパティ

アダプタに関するプロパティは、すべての接続ファクトリで使用できます。ファクトリ・ベースの構成が使用できる、アダプタに関するプロパティはほとんどありません。ただし、それらはファクトリ構成内にある同じ名前のプロパティでオーバーライドできます。これらのプロパティがファクトリで構成されていない場合、ファクトリは、これらのアダプタに関するプロパティ構成を使用します。

表20に、ファクトリ・ベースの構成がサポートするリソース・アダプタ・デプロイメント記述子内にある、アダプタに関するそれらのカスタム・プロパティを示します。

表20 アダプタに関するプロパティ
プロパティ
種類
デフォルト値
説明
autoTran
ブール
false
AUTOTRANが許可されるかどうかを決定します。ファクトリに関するautoTranが構成されていない場合は、ファクトリによって使用されます。
appManagedLocalTxTimeout
整数
300秒
AUTOTRAN、またはクライアント・アプリケーション管理下のローカル・トランザクションが使用するトランザクション・タイムアウトを定義します。ファクトリに関するappManagedLocalTxTimeoutが構成されていない場合は、ファクトリによって使用されます。
throwFailureReplyException
ブール
true
Oracle Tuxedoから失敗応答を受信したときにcom.oracle.tuxedo.adapter.TuxedoReplyExceptionをスローするかどうかを構成します。ファクトリに関するthrowFailureReplyExceptionがファクトリに対して構成されていない場合は、そのファクトリによって使用されます。

ファクトリ・ベースの構成におけるAUTOTRANトランザクション・タイムアウトの実行優先度の順序を次に示します。

  1. ファクトリに関するappManagedLocalTxTimeoutプロパティ
  2. アダプタに関するappManagedLocalTxTimeoutプロパティ
  3. com.oracle.tuxedo.adapter.AppManagedLocalTxTimeout JVMプロパティ
  4. デフォルトの300秒

アダプタに関するappManagedLocalTxTimeoutは、リソース・アダプタ・デプロイメント記述子(RADD)ファイル(ra.xml)内のresourceadapterタイプで、config-propertyとして構成されます。

リスト21に、ra.xmlファイル内にトランザクション・タイムアウトが設定されているAUTOTRANを使用する例を示します。

リスト21 AUTOTRANを、ra.xmlファイル内のトランザクション・タイムアウトとともに使用する例
<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoFBCResourceAdapter</resourceadapter-class>
   <config-property>
     <config-property-name>autoTran</config-property-name>
     <config-property-type>java.lang.Boolean</config-property-type>
     <config-property-value>true</config-property-value>
   </config-property>
   <config-property>
    <config-property-name>appManagedLocalTxTimeout</config-property-name>
     <config-property-type>java.lang.Integer</config-property-type>
     <config-property-value>50</config-property-value>
   <config-property>
リソース関連のプロパティ

リソース関連プロパティは、すべてのファクトリで使用でき、リソース・アダプタ・デプロイメント記述子を使用して構成されます。デプロイメント記述子のresourceadapterタイプで構成されます。唯一の例外はアプリケーション・パスワードで、柔軟性を求めて各ファクトリで使用できるようにされており、このリソース関連プロパティでは使用できません。

表21 リソース関連のプロパティに示されたプロパティはすべてオプションです。

表21 リソース関連のプロパティ
プロパティ
種類
デフォルト値
説明
fieldTable16Classes
String
なし
FML用のフィールド表16クラス。コンマで区切られたリストです。
fieldTable32Classes
String
なし
FML32用のフィールド表32クラス。コンマで区切られたリストです。
viewFile16Classes
String
なし
VIEW用のVIEW表16クラス。コンマで区切られたリストです。
viewFile32Classes
String
なし
VIEW32用のVIEW表32クラス。コンマで区切られたリストです。
tpusrFile
String
なし
TPUSRファイルへのフル・パス名。
remoteMBEncoding
String
なし
Oracle Tuxedoアプリケーションが使用するマルチ・バイト・エンコーディング。
mBEncodingMapFile
String
なし
エンコーディング・マップ・ファイルへのフル・パス名。

リスト22に、ファクトリ・ベースの構成に対して、リソース・アダプタ・デプロイメント記述子に2つのVIEW32クラス(view1およびview2)情報を記述する構成例を示します。

リスト22 リソース・アダプタ・デプロイメント記述子のファクトリ・ベースの構成
<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoFBCResourceAdapter</resourceadapter-class>
  <config-property>
   <config-property-name>viewFile32Classes<config-property-name>
   <config-property-type>java.lang.String</config-property-type>
   <config-property-value>tuxedo.view32.view1,tuxedo.view32.view2 </config-property-value>
  </config-property>

接続ファクトリ・プロパティ

接続ファクトリに対して構成できるプロパティには3つのタイプがあります。

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

ファクトリ内でも使用可能なアダプタに関するプロパティ

アダプタに関するいくつかのプロパティは、各ファクトリ構成に対して指定でき、ファクトリのアダプタに関するプロパティをオーバーライドします。ファクトリで指定しない場合、ファクトリはアダプタに関する構成をこれらのプロパティに使用します。

表22 ファクトリに関するプロパティ表
プロパティ名
種類
デフォルト値
説明
autoTran
ブール
なし
このファクトリが作成した接続を使用するリクエストに対して、AUTOTRANを使用できるかどうかを定義します。構成しない場合は、アダプタに関するAUTOTRAN構成が使用されます。構成された場合、truefalseかに関係なく、アダプタに関するAUTOTRAN構成をオーバーライドします。
appManagedLocalTxTimeout
整数
なし
AUTOTRANまたはクライアント・アプリケーション管理のトランザクションによって使用されるトランザクション・タイムアウトを定義します。構成しない場合、アダプタに関するローカルTXタイムアウトを使用します。単位は秒です。
throwFailureReplyException
ブール
なし
Oracle Tuxedoから失敗応答を受信したときにcom.oracle.tuxedo.adapter.TuxedoReplyExceptionをスローするかどうかを構成します。構成しない場合、アダプタに関する設定が使用されます。

ファクトリ・ベースの構成におけるAUTOTRANの実行優先度の順序を次に示します。

  1. ファクトリappManagedLocalTxTimeoutプロパティ
  2. アダプタに関するappManagedLocalTxTimeoutプロパティ
  3. com.oracle.tuxedo.adapter.AppManagedLocalTxTimeout JVMプロパティ
  4. デフォルトの300秒

リスト23に、weblogic-ra.xmlファイルの例を示します。

リスト23 weblogic-ra.xmlファイル
<outbound-resource-adapter>
  <connection-definition-group>
    <connection-factory-interface>javax.resources.cci.ConnectionFactory</connection-factory-interface>
    <connection-instance>
      <jndi-name>eis/TuxedoConnectionFactory1</jndi-name>
        <connection-properties>
          <properties>
            <property>
              <name>autoTran</name>
              <value>true</value>
            </property>
            <property>
              <name>appManagedLocalTxTimeout</name>
              <value>50</value>
            </property>
接続ファクトリ名

接続ファクトリ名は、connectionFactoryNameプロパティを使用して指定できます。このプロパティはオプションですが、この接続ファクトリによって作成された接続を使用して開始されたサービス・リクエストに対してトランザクションが可能である場合は、構成しておくことをお薦めします。また、DMMIBを使用してOracle TuxedoのDomain構成内に動的にDM_REMOTE_DOMAINSを構成する場合も、構成しておくことをお薦めします。

表23に、接続ファクトリのプロパティを示します。

表23 接続ファクトリ・プロパティ表
プロパティ名
種類
デフォルト値
説明
connectionFactoryName
String
なし
この接続ファクトリの名前を定義します。

リスト24に、weblogic-ra.xmlファイルの例を示します。

リスト24 接続ファクトリのweblogic_ra-xmlファイル
<outbound-resource-adapter>
  <connection-definition-group>
    <connection-factory-interface>javax.resources.cci.ConnectionFactory</connection-factory-interface>
    <connection-instance>
      <jndi-name>eis/TuxedoConnectionFactory1</jndi-name>
        <connection-properties>
          <properties>
            <property>
              <name>autoTran</name>
              <value>true</value>
            </property>
           <property>
             <name>connectionFactoryName</name>
            <value>TuxedoConnectionFactory1</value>
          </property>

このプロパティが構成され、default LocalAccessPointが構成されている場合、.lapid.<connectionFactoryName>という名前のファイルが現在の作業ディレクトリに作成されます。このファイルには、動的に生成されたLocalAccessPoint IDが含まれます。たとえば、前述の例では、.lapid.TuxedoConnectionFactory1という名前のファイルが作成されます。

アプリケーション・パスワード

リソースのアプリケーション・パスワードは、RADDベースの構成ではサポートされませんが、ファクトリ・ベースの構成にはファクトリに関するプロパティとして構成できます。このプロパティはファクトリごとに使用でき、異なるファクトリで異なるアプリケーション・パスワードを持つことが容易に可能になります。RADDベースの構成には、これに相当するものはありません。

ファクトリ・ベースの構成のapplicationPassword プロパティは、表24に示すように、クリア・テキストにも暗号文にもできます。暗号文を使用して構成するには、com.oracle.tuxedo.tools.EncryptPasswordの出力を使用する必要があります。次に、サンプル出力を示します。

c:\tuxedo\JCA\adapter> java -classpath %classpath% com.oracle.tuxedo.tools.EncryptPassword mypassword foo.key
Encrypted Password: {Salted-AES}WBGk6LjHuI515pwXPTfaOQ==

WebSphere 7.0以降では、このツールを使用してパスワードを暗号化する必要はありません。暗号化はWebSphere内で処理されます。

表24 アプリケーション・パスワード・プロパティ
プロパティ名
種類
デフォルト値
説明
applicationPassword
String
なし
クリア・テキスト、またはcom.oracle.tuxedo.tools.EncryptPasswordツールを使用して生成した暗号文のによるOracle Tuxedoアプリケーション・パスワード。

ローカル・アクセス・ポイント関連のプロパティ

表25に、ファクトリ・ベースの構成のためのLocalAccessPoint関連プロパティを示します。

表25 LocalAccessPointのプロパティ
プロパティ名
種類
デフォルト値
説明
localAccessPointSpec
String
なし
デフォルトで接続プリンシパル名として使用されます。グローバルに一意である必要があります。
//<network address>:<port>/domainId
mutualAuthenticationRequired
ブール
false
リモートのOracle Tuxedo GWTDOMAINゲートウェイに接続する場合に相互認証が必要かどうかを示します。SSL用です。
identityKeyStoreFileName
String
なし
IDキー・ストア・ファイル名のフル・パス名。SSL用です。
identifyKeyStorePassPhrase
String
なし
クリア・テキストまたは暗号文の、IDキー・ストアのパスワード。SSL用です。
privateKeyAlias
String
なし
秘密鍵を取得するために使用されるIDキー・ストア内の別名。SSL用です。
privateKeyPassPhrase
String
なし
クリア・テキストまたは暗号文の、IDキー・ストアの秘密鍵を復号するパスワード。SSL用です。
trustKeyStoreFileName
String
なし
信頼キー・ストア・ファイル名のフル・パス名。SSL用です。
trustKeyStorePassPhrase
String
なし
信頼キー・ストアから証明書を取得する場合に使用される、クリア・テキストまたは暗号文のパスワード。SSL用です。

SSL関連のプロパティは7つあります。そのうちの6つはキー・ストアおよび証明書ストアに関連しており、SSLが要求される場合に構成する必要があります。SSLを使用する際のオプションとなる唯一のプロパティは、mutalAuthenticationRequiredです。

デフォルトでは、mutualAuthenticationRequirefalseになっています。必須の6つのプロパティのいずれか1つがないと、SSLは無視されます。Toniは、セッション・プロファイル情報に加え、リモートのOracle Tuxedo GWTDOMAINゲートウェイとのセッション・ネゴシエーションにも依存しており、LLEを使用します。

localAccessPointSpecプロパティの指定は、オプションです。指定しない場合、default LocalAccessPointが使用されます。default LocalAccessPointがこのファクトリに対して使用される場合、connectionFactoryNameも構成しておくことをお薦めします。

リスト25に、weblogic-ra.xmlファイルの例を示します。

リスト25 weblogic-ra.xmlの使用例
<outbound-resource-adapter>
  <connection-definition-group>
    <connection-factory-interface>javax.resources.cci.ConnectionFactory</connection-factory-interface>
    <connection-instance>
      <jndi-name>eis/TuxedoConnectionFactory1</jndi-name>=
        <connection-properties>
          <properties>
            <property>
              <name>localAccessPointSpec</name>
              <value>//localhost:123456/domainId=JDOM</value>
            </property>
RemoteAccessPoint関連のプロパティ

RemoteAccessPointは、ネットワーク・アドレスとRemoteAccessPointアクセス制御関連の情報の両方によって表されます。最も重要なプロパティは、remoteAccessPointSpecです。これは、コンマで区切られたリストです。コンマによって各RemoteAccessPointが区切られます。表26に、ファクトリ・ベースの構成で使用できるRemoteAccessPoint関連のプロパティを示します。

表26 RemoteAccessPointプロパティ表
プロパティ名
種類
値の範囲
説明
remoteAccessPointSpec
String
デフォルト値なし。
このプロパティには、NetworkAddressと、AccessPointIdプラスname属性の両方が含まれます。これは、RemoteAccessPointのコンマ区切りリストです。各エントリのdomainIdは、AccessPointIdを置換するために使用されます。このdomainIdは、デフォルトで、リモートのTuxedoアクセス・ポイントとのセッションを確立するときにリモート・アクセス・ポイントを識別するために使用される接続プリンシパル名として使用されます。指定しない場合はエラーになります。また、グローバルに一意である必要があります。
NetworkAddressも指定の一部になります。NetworkAddressには、リモートのTuxedoアクセス・ポイントのホスト・ネットワーク・アドレスとポート番号の両方が含まれます。TCP/IPアドレスを、//hostname:portまたは//#.#.#.#:portという形式で指定します。
rapAllowAnonymous
ブール
{true, false}
リモートのTuxedoアクセス・ポイントで、匿名アクセスが許容されるかどうかを示します。デフォルト値はfalseです。
rapDefaultApplicationKey
String
任意の有効なTuxedoアプリケーション・キー。
このリモートのTuxedoアクセス・ポイントのデフォルト・アプリケーション・キー値。指定しない場合、-1と想定されます。
rapApplicationKeyClass
String
デフォルト値なし。
カスタム・アプリケーション・キー・ジェネレータの完全修飾クラス名。指定しない場合、デフォルトのアプリケーション・キー・ジェネレータが使用されます。
rapApplicationKeyClassParam
String
デフォルト値なし。
クラスが実行時に初期化される場合に、カスタム・アプリケーション・キー・ジェネレータに渡されるパラメータ文字列

RemoteAccessPointは、固有の書式で表されます。ファクトリを使用可能にするためには、remoteAccessPointSpecを構成する必要があります。

リスト26に、RemoteAccessPoint weblogic-ra.xmlファイルの例を示します。

リスト26 RemoteAccessPoint weblogic-ra.xmlファイル
<outbound-resource-adapter>
  <connection-definition-group>
    <connection-factory-interface>javax.resources.cci.ConnectionFactory</connection-factory-interface>
    <connection-instance>
      <jndi-name>eis/TuxedoConnectionFactory1</jndi-name>
        <connection-properties>
          <properties>
            <property>
              <name>autoTran</name>
              <value>true</value>
            </property>
            <property>
              <name>localAccessPointSpec</name>
              <value>//localhost:123456/domainId=JDOM</value>
            </property>
           <property>
            <name>remoteAccessPointSpec</name>
            <value>//bluestar:11023/domainId=guinevre,//orion:37654/domainId=galahad<value>
          </property>

remoteAccessPointSpecは各ファクトリに1つのみ指定できます。rapApplicationKeyClassrapApplicationKeyClassParamを指定すると、guinevregalahad両者のアイデンティティ通知のために使用されます。

RemoteAccessPointSpec

RemoteAccessPointSpecプロパティは、より多くのRemoteAccessPointおよびSession関連の属性を構成できるように拡張されました。これらの属性はコンマで区切られます。各属性は、名前と値のペアです。次に、サポートされる属性のリストを示します。

セッション認証がDM_PWの場合、1つ以上のパスワード・ペアが有効である必要があります。パスワード・ペア1とパスワード・ペア2が有効である場合、パスワード・ペア1はセッション認証情報を暗号化するために使用されます。

ファクトリ・ベースの構成のlPasswd1lPasswd2rPasswd1およびrPasswd2の各属性は、クリア・テキストと暗号文のいずれも可能です。暗号文を使用して構成するには、com.oracle.tuxedo.tools.EncryptPasswordの出力を使用する必要があります。次に、サンプル出力を示します。

c:\tuxedo\JCA\adapter> java -classpath %classpath% com.oracle.tuxedo.tools.EncryptPassword mypassword foo.key
Encrypted Password: {Salted-AES}WBGk6LjHuI515pwXPTfaOQ==

リスト27に、weblogic-ra.xmlファイルのRemoteAccessPointSpecプロパティの例を示します。

リスト27 RemoteAccessPointSpecプロパティのweblogic-ra.xmlファイル
<outbound-resource-adapter>
  <connection-definition-group>
    <connection-factory-interface>javax.resources.cci.ConnectionFactory</connection-factory-interface>
    <connection-instance>
      <jndi-name>eis/TuxedoConnectionFactory</jndi-name>
      <connection-properties>
        <properties>
          <property>
            <name>spSecurity</name>
            <value>DM_PW</name>
          </property>
          <property>
            <name>remoteAccessPointSpec</name>
            <value>//localhost:123456/domainId=TUX_ID,lPasswd1=weblogic,rPassword=tuxedo</value>
            </property>
セッション・プロファイル関連のプロパティ

表27に、ファクトリ・ベースの構成のデフォルトSessionProfileのデフォルト値を示します。

表27 SessionProfileプロパティ表
プロパティ名
種類
値の範囲
説明
spBlockTime
整数
0..2147483647
このプロファイルを使用するブロッキング・アウトバウンド・リクエストで許容される最大ミリ秒数。デフォルト値は60秒(60000ミリ秒)です。時間メソッドInteractionSpec.setExecutionTime()は、このブロック・タイムアウトをオーバーライドできます。
spSecurity
String
{APP_PW,DM_PW,NONE}
構成しない場合、GWTDOMAINセッション認証は不要です。DM_PWセッション認証セキュリティ・タイプを構成する場合、各remoteAccessPointに対して1つ以上のパスワード・ペアを構成する必要があります。APP_PWセッション認証セキュリティ・タイプを構成する場合、そのファクトリに対してapplicationPasswordを構成する必要があります。
spInteroperate
ブール
{true, false}
このセッションがリモートのTuxedo 6.5リリースGWTDOMAINゲートウェイとの相互運用を許容されているかどうかを指定します。デフォルト値はfalseです。
接続ポリシー
使用不可。
 
ON_STARTUPと同じように機能します。
spCredentialPolicy
String
{LOCAL. GLOBAL}
ユーザー資格証明通知ポリシー。値がLOCALの場合、通知はありません。デフォルト値はLOCALです。
spRetryInterval
Long
0..2147483647
このセッションが自動接続確立試行を繰り返す前に待機する秒数。この要素値は、ConnectionPolicyON_STARTUPである場合のみ設定します。デフォルト値は60です。値0は、接続再試行メカニズムを無効にします。
spMaxRetries
Long
0..922337206385775807
このセッションがリモートのOracle Tuxedoアクセス・ポイントへのセッション接続を確立しようとする回数の最大値。この要素は、ConnectionPolicyON_STARTUPの場合のみ設定します。デフォルト値は922337206385775807です。
spCompressionLimit
整数
0..2147483647
データをリモートのOracle Tuxedoアクセス・ポイントに送信する場合にこのセッションが使用する圧縮しきい値。このサイズより大きなアプリケーション・バッファは、圧縮されます。デフォルト値は2147483647です。
spMinEncryptBits
String
{"0","40","56","128","256"}
セッション接続を確立する場合、このセッションが使用する暗号化キー長の最小値(単位はビット)。値0は暗号化がオプションであることを示します。値256はSSLの場合に使用します。デフォルト値は0です。
spMaxEncryptBits
String
{"0","40","56","128","256"}
セッション接続を確立する場合にこのセッションが使用する暗号化キー長の最大値(単位はビット)。値0は、暗号化が使用されないことを示します。デフォルト値は128です。
spKeepAlive
Long
{0..2147483647}
このGWTDOMAINセッションにアプリケーション・レベルのキープ・アライブが構成されているかどうかと、その場合に待機タイマーが計時を開始するまでのアイドル・タイムの最大値を指定します。デフォルト値は0で、アプリケーション・レベルのキープ・アライブが無効であることを意味します。単位はミリ秒です。
接続がビジーの場合、リモート・ゲートウェイに特別なキープ・アライブ・メッセージを送信する必要はありません。ただし、spKeepAliveで指定されたミリ秒数(秒単位に切り上げ)が経過しても接続上にアクティビティがない場合、特別なキープ・アライブ・メッセージを送信して、spKeepAliveWaitタイマーを開始します(秒単位に切り上げ)。
この「待機」時間が経過しても確認を受信できない場合、接続が失効していると宣言して、接続をクローズし、セッションを終了します。
spKeepAliveWait
Long
{0..2147483647}
このセッションでアプリケーション・レベルのキープ・アライブの確認が必要かどうか、および、確認を受信しないままどれくらいの時間が経過したときに、接続をアクセス不可と宣言するかを示します。デフォルト値は10秒です。
指定した値が「0」の場合、RemoteAccessPointからの確認をチェックしません。これはセッション接続がKeepAlive機能によってクローズされることを防止できます。単位はミリ秒です。

リスト28に、SessionProfileプロパティのweblogic-ra.xmlファイルの例を示します。

リスト28 SessionProfileプロパティのweblogic-ra.xmlファイル
<connection-instance>
  <connection-properties>
    <properties>
      <property>
        <name>spBlockTime</name>
        <value>120000</value>
      </property>
</connection-instance>
インポート関連のプロパティ

ファクトリ・ベースの構成ではデフォルト・インポートを使用できますが、アダプタからリモートのTuxedoアプリケーション・ドメインに統一的にアクセスできるものを制限することもできます。各ファクトリに対して"impResourceName"プロパティを1つのみ指定できますが、これは、Tuxedo JCA AdapterクライアントがアクセスできるリモートのOracle Tuxedoサービス/リソースのコンマ区切りリストを含んでいます。

LoadBalancingアルゴリズムは指定できず、常にRoundRobinを使用します。サービス・リクエストは、その個別の接続ファクトリのすべてのRemoteAccessPointsにわたってロード・バランシングされます。

表28に、ファクトリ・ベースの構成でインポートに関連する新しいプロパティを示します。

表28 インポート関連プロパティweblogic-ra.xmlファイル
プロパティ名
種類
値の範囲
説明
impResourceName
String
コンマ区切りリストに格納されたすべての有効なTuxedoリソース名。
有効なOracle Tuxedoのサービス名またはキュー名。ワイヤ・プロトコルのname変換が、ありません。これは、本質的にdmconfigファイルにおけるインポートのRemoteName属性と同じです。

リスト29に、weblogic-ra.xmlファイルの例を示します。

リスト29 Weblogic-ra.xmlの使用例
<connection-instance>
  <connection-properties>
    <properties>
      <property>
        <name>impResourceName</name>
        <value>TOUPPER,ECHO</value>
      </property>
</connection-instance>
セッション

Tuxedo JCA Adapter LocalAccessPointをリモートのOracle Tuxedo GWTDOMAINゲートウェイに接続するセッション。ファクトリ・ベースの構成では、明示的にセッションを指定する必要がないため、使用できるSession関連のプロパティはありません。ファクトリ内で使用できるセッションはすべてデフォルト・セッションになります。

Tuxedo JCA Adapterは、接続ファクトリで可能なLocalAccessPointRemoteAccessPointのすべての組合せに対してセッションを作成します。接続ファクトリ構成当たり、1つのLocalAccessPointしか存在できないため、多くとも1xN個のセッションのみ可能です(ここで、NRemoteAccessPointの数です)。リスト30は、セッションを使用する例を示しています。

リスト30 セッションのweblogic-ra.xml
<property>
  <name>localAccessPointSpec</name>
  <value> //localhost:12345/domainId=JDOM</value>
</property>
<property>
  <name>remoteAccessPointSpec</name>
  <value>//localhost:13456/domainId=TDOM1,//blues:23457/domainId=TDOM2</value>
</property>

次のセッションが可能です。

(JDOM,TDOM1)

(JDOM,TDOM2)

エクスポート

ファクトリ・ベースの構成で使用できる、エクスポート関連のプロパティはありません。

ファクトリ・ベースの構成の構成方法

JBOSSサーバー

Tuxedo JCA Adapterのファクトリ・ベースの構成を、リスト31に示します。ファイル名は任意の名前を付けることができます。TJA-ds.xmlを取得し、たとえば、このファイルを$JBOSS_HOME/server/$BOOTMODE/deployディレクトリにコピーしてください。

リスト31 JBOSSサーバーのサンプル構成
<?xml version="1.0"?> 
<connection-factories> 
    <tx-connection-factory> 
        <jndi-name>eis/TuxedoConnectionFactory</jndi-name> 
        <use-java-context>false</use-java-context> 
        <rar-name>com.oracle.tuxedo.TuxedoAdapter.rar</rar-name> 
         
<connection-definition>javax.resource.cci.ConnectionFactory</connection-defini 
tion> 
        <max-pool-size>50</max-pool-size> 
        <config-property name="autoTran" 
type="java.lang.Boolean">true</config-property> 
        <config-property name="connectionFactoryName" 
type="java.lang.String">Factory1</config-property> 
        <config-property name="localAccessPointSpec" 
type="java.lang.String">//bej301151:2497/domainId=JDOM</config-property> 
        <config-property name="remoteAccessPointSpec" 
type="java.lang.String">//bej301151:3138/domainId=TDOM1</config-property> 
        <config-property name="spBlockTime" 
type="java.lang.Integer">20000</config-property> 
        <config-property name="spInteroperate" 
type="java.lang.Boolean">false</config-property> 
        <config-property name="spCredentialPolicy" 
type="java.lang.String">Local</config-property> 
        <config-property name="spRetryInterval" 
type="java.lang.Long">60</config-property> 
        <config-property name="spMaxRetries" 
type="java.lang.Long">1000</config-property> 
        <config-property name="spCompressionLimit" 
type="java.lang.Integer">1000000</config-property> 
        <config-property name="spMinEncryptBits" 
type="java.lang.String">56</config-property> 
        <config-property name="spMaxEncryptBits" 
type="java.lang.String">128</config-property> 
        <config-property name="spKeepAlive" 
type="java.lang.String">0</config-property> 
        <config-property name="spKeepAliveWait" 
type="java.lang.Long">200000</config-property> 
        <config-property name="impResourceName" 
type="java.lang.String">UPDATE_DB1,UPDATE_DB2,CLEAN_DB1,CLEAN_DB2,COUNT_DB1,CO 
UNT_DB2,UPDATE_FAIL_DB1,TIMEOUT_DB1,FAILSVC_DB1,FAILSVC_DB2,UPDATE_FAIL_DB2</c 
onfig-property> 
    </tx-connection-factory> 
</connection-factories>
WebLogic Server

Tuxedo JCA Adapterのファクトリ・ベースの構成は、WebLogicのweblogic-ra.xmlファイルを介して行います。構成の例は、ここまでの項にあります。リスト32に、完全なサンプル構成を示します。

リスト32 WebLogicサーバーのサンプル構成
<?xml version="1.0"?>
<weblogic-connector
 xmlns="http://www.bea.com/ns/weblogic/90">
  <jndi-name>eis/TuxedoConnector</jndi-name>
  <enable-access-outside-app>true</enable-access-outside-app>
  <enable-global-access-to-classes>true</enable-global-access-to-classes>
  <outbound-resource-adapter>
    <connection-definition-group>
      <connection-factory-interface>javax.resource.cci.ConnectionFactory</connection-factory-interface>
      <connection-instance>
        <jndi-name>eis/TuxedoConnectionFactory1</jndi-name>
        <connection-properties>
          <properties>
            <property>
              <name>remoteAccessPointSpec</name>
              <value>//localhost:12478/domainId=TDOM1_ID</value>
            </property>
          </properties>
        </connection-properties>
      </connection-instance>
      <connection-instance>
        <jndi-name>eis/TuxedoConnectionFactory2</jndi-name>
        <connection-properties>
          <properties>
            <property>
              <name>spSecurity</name>
              <value>APP_PW</value>
            </property>
            <property>
              <name>applicationPassword</name>
              <value>{Salted-AES}hHAsW13whgqTobG1t9Q92Q==</value>
            </property>
            <property>
              <name>remoteAccessPointSpec</name>
              <value>//localhost:12488/domainId=TDOM2_ID</value>
            </property>
          </properties>
        </connection-properties>
      </connection-instance>
      <connection-instance>
        <jndi-name>eis/TuxedoConnectionFactory3</jndi-name>
        <connection-properties>
          <properties>
            <property>
              <name>spSecurity</name>
              <value>DM_PW</value>
            </property>
            <property>
              <name>localAccessPointSpec</name>
              <value>//localhost:10801/domainId=JDOM_ID</value>
            </property>
            <property>
              <name>remoteAccessPointSpec</name>
              <value>//localhost:12498/domainId=TDOM3_ID,
                 lPasswd1={Salted-AES}xNgOdUuXB7Z49D0cssluxA==,
                 rPasswd1={Salted-AES}hAIzbPI+YyaeuHX0A9Umqg==</value>
            </property>
          </properties>
        </connection-properties>
      </connection-instance>
    </connection-definition-group>
  </outbound-resource-adapter>
</weblogic-connector>
WebSphere Server

通常はTuxedo JCA Adapterをインストール後に構成します。先にRADDベースのアダプタに関するプロパティを構成してから、ファクトリ・プロパティを構成できます。

デプロイメント記述子プロパティを構成します。

次に示すのは、WebSphereコンソールからRADD内のアダプタに関するプロパティを構成する手順です。

  1. コンソールからTuxedo JCA Adapterをインストールします。
  2. リソース 'Resource Adapters' リソース・アダプタ

  3. インストールしたTuxedo JCA Adapterの「名前」列をクリックします。
  4. 「Tuxedo JCA Adapter」という名前を使用すると仮定します。

  5. リソースから 'Resource Adapters' リソース・アダプタ ' Tuxedo JCA Adapter。
  6. 「追加プロパティ」の下、右側にある「カスタム・プロパティ」をクリックします。

  7. Tuxedo JCA Adapter ' カスタム・プロパティから
  8. カスタム・プロパティ表の上部で「プリファレンス」をクリックします。コンソールが拡張されて最大行入力フィールドを追加できるため、デフォルト値を「60」に変更してから、入力フィールド・ボックスの右下にある「適用」ボタンをクリックし、ボックスにチェックマークを入れます。

    これで、すべての構成可能なアダプタに関するプロパティを表示できるはずです。

  9. 「名前」列の下で、目的のプロパティをクリックします。
  10. たとえば: remoteAccessPointSpec

  11. Tuxedo JCA Adapterから ' カスタム・プロパティ ' remoteAccessPointSpec
  12. 目的のremoteAccessPointSpec値を「値」フィールドに追加するか、変更して、「適用」ボタンをクリックし、「保存」をクリックします。

  13. 手順#5から手順#6までを使用して、別のプロパティを変更します。

WebSphere 7.0のapplicationPasswordプロパティを構成する場合、WebSphere 7.0がパスワードを暗号化するため、com.oracle.tuxedo.tools.EncryptPasswordツールを使用してパスワードを暗号化する必要はありません。

ファクトリ・プロパティの構成

WebSphereのファクトリ・ベースの構成を構成するには、次の手順を実行します。

  1. Tuxedo JCA Adapterがインストールされていない場合は、コンソールからインストールします。(リソース ' リソースアダプタ ' リソースアダプタ)。
  2. Tuxedo JCA Adapterの「名前」列をクリックします。
  3. リソース ' リソース・アダプタ ' リソース・アダプタ

    「Tuxedo JCA Adapter」と名前を付けると仮定します。

  4. リソースから ' リソースアダプタ ' リソースアダプタ ' Tuxedo JCA Adapter。
  5. 「追加プロパティ」の下、右側でJ2C接続ファクトリをクリックします。

  6. リソースから ' リソースアダプタ ' リソースアダプタ ' Tuxedo JCA Adapter ' J2C接続ファクトリ。
  7. 「新規」ボタンをクリックします。

  8. J2C接続ファクトリから ' 新規、
  9. 「名前」フィールドに接続ファクトリ名を入力し、「JNDI name」フィールドに一意のJNDI名を入力してから、ページの一番下で「適用」ボタンをクリックします。

    「名前」フィールドに「factory1」と入力したと仮定します。

  10. J2C接続ファクトリから ' factory1、
  11. 「保存」ボタンをクリックします。J2C接続ファクトリのページに戻ります。

  12. Tuxedo JCA Adapterから ' J2C接続ファクトリ、
  13. 「名前」列で「factory1」をクリックします。ページ「factory1」に戻ります。

  14. Tuxedo JCA Adapterから ' J2C接続ファクトリ ' factory1、
  15. 「追加プロパティ」の下、右側にある「カスタム・プロパティ」をクリックします。

  16. Tuxedo JCA Adapterから ' J2C接続ファクトリ ' factory1 ' カスタム・プロパティ、
  17. 「名前」列でプロパティ名をクリックすると、プロパティのページに移動します。「"localAccessPointSpec"」を選択したとします。

  18. J2C接続ファクトリから ' factory1 ' カスタム・プロパティ ' localAccessPointSpec
  19. 「値」フィールドに値を入力し、「適用」ボタンをクリックして、「保存」をクリックします。「カスタム・プロパティ」ページに移動します。

  20. 変更する必要がある各プロパティに対して、手順#9と#10を繰り返します。

 


Oracle Tuxedo JCA Adapterデプロイメント

リソース・アダプタのデプロイメントは、アプリケーション・サーバーによって変わります。通常、次の手順で行います。

Tuxedo JCA Adapterのデプロイには、デプロイメント・モードの選択、リソース・アダプタ記述子の構成、アダプタの再パッケージ化、およびJCA 1.5/1.6準拠JEEアプリケーション・サーバーへのデプロイが含まれます。ほとんどの場合、ra.xmlファイル(META-INFディレクトリにあります)を変更して、アダプタを起動し、実行中の状態にするだけで済みます。

この項では、次のトピックについて説明します。

注意: ほとんどの場合、ra.xmlファイル(META-INFディレクトリにあります)を変更して、アダプタを起動し、実行中の状態にするだけで済みます。
注意: リソース・アーカイブの構成と再パッケージ化の手順は、ターゲット・アプリケーションのタイプとは無関係に同一です。しかし、Tuxedo JCA Adapterのデプロイメントは、アプリケーション・サーバーによって異なります。
注意: 詳細は、ターゲット・アプリケーション・サーバーのドキュメントを参照してください。

Oracle JCA Adapterのデプロイメント・タスク

Oracle JCA Adapterをデプロイするには、次のタスクが必要です。

  1. com.oracle.tuxedo.TuxedoAdapter.rarファイルをディレクトリに展開します。
  2. クライアント側のみか、本格的なサーバーとクライアントかを決定します。
    1. クライアント側のみの使用を選択する場合
      • META-INF/ra.xmlを削除します。
      • META-INF/server.ra.xmlを削除します。
      • META-INF/sample.weblogic-ra.xmlの削除
      • META-INF/client-side.ra.xmlの名前をMETA-INF/ra.xmlに変更します。
      • /Domain構成用のプロパティを追加して、META-INF/ra.xmlを変更します。
    2. 本格的なサーバーおよびクライアント動作の使用を選択する場合
      • META-INF/ra.xmlを削除します。
      • META-INF/client-side.ra.xmlを削除します。
      • META-INF/sample.weblogic-ra.xmlの削除
      • META-INF/server.ra.xmlの名前をMETA-INF/ra.xmlに変更します。
      • 目的の/Domain構成プロパティを使用してra.xmlファイルを変更します。dmconfigプロパティを指定する必要があります。
      • 目的の正しい/Domain構成を使用して、dmconfig.xmlを変更します。
      • dmconfig.xmlファイルの名前を、dmconfigプロパティが指定した任意の名前に変更します。
      • dmconfigファイルをリソース・アーカイブの一部として扱わない場合は、希望するディレクトリへ移動します。
    3. ファクトリ・ベースの構成の使用を選択する場合
      • META-INF/client-side.ra.xmlを削除します。
      • META-INF/server.ra.xmlを削除します。
      • META-INF/weblogic-ra.xmlを削除します。
      • WebLogicサーバー用に構成する場合、META-INF/sample.weblogic-ra.xmlの名前をMETA-INF/weblogic-ra.xmlに変更します。
      • WebLogicサーバーの場合は、META-INF/weblogic-ra.xmlを目的の構成に変更します。WebSphereサーバーの場合は、前章で説明した手順を使用して、コンソールから構成します。
  3. 作業ディレクトリを.jar化して、リソース・アダプタ・アーカイブを作成します。
  4. そのアプリケーション・サーバーで優先される方式を使用して、リソース・アダプタ・アーカイブをデプロイします。
  5. 注意: 一部のアプリケーション・サーバーではコンソールを介した接続プール情報の構成が必要になる場合があります。一部のアプリケーション・サーバーではアダプタのアクティブ化が必要になる場合があります。

Oracle Tuxedo JCA Adapterデプロイメントの構成

Tuxedo JCA Adapterに構成されているアダプタ・クラスがTuxedoResourceAdapterTuxedoClientSideResourceAdapterまたはTuxedoFBCResourceAdapterのいずれかであることを確認します。

TuxedoResourceAdapterクラス

TuxedoResourceAdapterを使用する場合、dmconfigプロパティを構成する必要があります。構成されたdmconfigプロパティに、パス情報を持たないファイル名だけが含まれている場合、リスト33に示すように、構成はリソースとしてロードされます。

リソース・アーカイブからロードできない場合、現在の作業ディレクトリにあるファイルとみなされます。ファイルを開くことができない場合、リソース・アダプタは起動せず、ResourceAdapterExceptionがスローされます。

リスト33 dmconfigカスタム・プロパティからリソースとしてロードされたdmconfigへ
<config-property>
  <config-property-name>dmconfig</config-property-name>
   <config-property-type>java.lang.String</config-property-type>
   <config-property-value>dmconfig.xml</config-property-value>
</config-property>

構成されたdmconfigプロパティにパス情報が含まれる場合、リスト34に示すように、ファイルとして扱われ、ロードされます。ファイルが開くことができない場合、リソース・アダプタは起動せず、ResourceAdapterExceptionがスローされます。

リスト34 ファイルとしてロードされたdmconfigプロパティ

<config-property>
   <config-property-name>dmconfig</config-property-name>
   <config-property-type>java.lang.String</config-property-type>
   <config-property-value>/user/dilbert/tja/dmconfig.xml
   </config-property-value>
</config-property>

dmconfigファイルでLocalAccessPointが構成されていない場合は、単一のdefault LocalAccessPointが作成されます。default LocalAccessPointは、デフォルトSessionProfileを使用するRemoteAccessPointとのセッションしか持てません。

アダプタは、すべてデフォルト値を使用して、デフォルトSessionProfileを作成します(ただしデフォルトSessionProfileに対しては常にON_STARTUPとなるConnectionPolicyを除く)。dmconfigファイルでSessionProfile が構成されている場合、デフォルトSessionProfileに追加して作成されます。

dmconfigファイルでセッションが構成されていない場合は、デフォルトSessionProfileを使用して構成されている各LocalAccessPointと各RemoteAccessPoint の間にデフォルト・セッションがアダプタによって作成されます。

リソース記述子ra.xmlファイルのresourceadapter-class要素には、リスト35に示すように、値としてcom.oracle.tuxedo.adapter.TuxedoResourceAdapter完全修飾クラス名が含まれるはずです。

リスト35 resourceadapter-class要素 - com.oracle.tuxedo.adapter.TuxedoResourceAdapter

<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.
   TuxedoResourceAdapter</resourceadapter-class>
注意: 新しい「クライアント側」モード・プロパティは、このクラス・ベースのリソース・アダプタでは使用できません。リソース・アダプタ・デプロイメント記述子ファイルにそれらのプロパティを構成する場合、動作はアプリケーション・サーバーにより異なります。
TuxedoClientSideResourceAdapterクラス

TuxedoClientSideResourceAdapterが構成されている場合、dmconfig構成は無視されます。このリソース・アダプタのクラスが構成される場合、すべての構成情報が、アプリケーション・サーバーのJCAコンテナが提供するリソース・アダプタJava Beanに含まれると想定されます。

localAccessPointSpecプロパティが構成されない場合、リソース・アダプタ・デプロイメント記述子ファイル・ベースの構成に対してデフォルトのLocalAccessPointが作成されます。

remoteAccessPointSpecプロパティが構成される場合、RemoteAccessPointを構築するために使用されます。remoteAccessPointSpecプロパティが構成されていない場合、構成は使用できず、警告メッセージがアダプタ・ログファイルに記録されます。

デフォルトのSessionProfileは、セッション・プロファイルに関連するプロパティからの情報を使用して作成されます。セッション・プロファイル関連のプロパティが構成されていない場合、デフォルト値だけを使用してデフォルトのSessionProfileが構築されます。LocalAccessPointからすべてのRemoteAccessPointまでのセッションが、デフォルトのSessionProfileを使用して作成されます。

リソース記述子ra.xmlファイルのresourceadapter-class要素には、リスト36に示すように、値としてcom.oracle.tuxedo.adapter.TuxedoClientSideResourceAdapter完全修飾クラス名が含まれるはずです。

リスト36 resourceadapter-class要素 - com.oracle.tuxedo.adapter.TuxedoClientSideResourceAdapter

<resourceadapter>
  <resourceadapter-class>com.oracle.tuxedo.adapter.
   TuxedoClientSideResourceAdapter</resourceadapter-class>
TuxedoFBCResourceAdapterクラス

TuxedoFBCResourceAdapterが構成されている場合、dmconfig構成と、リソース・アダプタ・デプロイメント記述子固有の構成のプロパティは無視されます。このリソース・アダプタのクラスが構成される場合、すべての構成情報が、アプリケーション・サーバーのJCAコンテナが提供するリソース・アダプタJava Beanと管理対象接続ファクトリJava Beanに含まれると想定されます。

ファクトリに対してlocalAccessPointSpecプロパティが構成されない場合、デフォルトのLocaAccessPointがそのファクトリに作成されます。各ファクトリに対してremoteAccessPointSpecが構成される必要があり、それはRemoteAccessPointを構築するために使用されます。

各ファクトリに対して、そのファクトリのSessionProfileと関連があるプロパティからの情報を使用してデフォルトのSessionProfileが作成されます。ファクトリに対してセッション・プロファイル関連のプロパティが構成されていない場合、ファクトリはアダプタに関するデフォルトSessionProfileを使用します。

リソース・デプロイメント記述子ra.xmlファイルのresourceadapter-class要素には、リスト37に示すように、値としてcom.oracle.tuxedo.adapter.TuxedoFBCResourceAdapter完全修飾クラス名が含まれるはずです。

リスト37 リソース・デプロイメント記述子ra.xmlファイルのresourceadapter-class要素
...
<resourceadapter>
   <resourceadapter-class>com.oracle.tuxedo.adapter.
    TuxedoFBCResourceAdapter</resourceadapter-class>
...

リソース・アダプタ・デプロイメント記述子のプロパティ

3つのスタイルの構成(リソース・アダプタ・デプロイメント記述子ベースの構成、ファクトリ・ベースの構成、dmconfigベースの構成)のすべてで使用できる、一連のリソース・アダプタ・デプロイメント記述子カスタム・プロパティがあります。唯一の例外は、dmconfigベースの構成を使用してのみ利用できるdmconfigカスタムプロパティです。リソース・アダプタ・デプロイメント記述子ベースの構成を使用しているときにこのプロパティを指定した場合、このプロパティは無視されます。

プロパティのカスタマイズ

ra.xmlファイル内の一部のプロパティは、内部的にTuxedo JCA Adapterまたはその記述情報に関係しているため、変更しないことをお薦めします。ただし、動作とアプリケーションをカスタマイズするために変更する必要があるプロパティもあります。

config-property

config-property要素は、通常、標準JCAデプロイメント記述子META-INF/ra.xmlファイル内でTuxedo JCA Adapterカスタム・プロパティを定義するために使用されます。表29に、Tuxedo JCA Adapterをカスタマイズするために使用されるプロパティを示します。

リソース・デプロイメント記述子META-INF/ra.xmlファイル内のdmconfigプロパティを使用して、Tuxedo JCA Adapter構成ファイルを指定する必要があります。詳細は、『Tuxedo JCA Adapterプログラミング・ガイド』で、構成ファイルの例を参照してください。

表29 カスタマイズ・プロパティ
プロパティ
種類
初期値(指定しない場合はデフォルト)
説明
traceLevel
java.lang.String
0
デバッグ・トレースのレベル。
詳細は、トランザクション・サポートを参照してください。
xaAffinity
java.lang.String
true
トランザクションのパフォーマンスを向上させるために、トランザクション固有のルーティングをオンにします。
keyFileName
java.lang.String
c:\tuxedo\keyfile
dmconfigベースの構成の場合のみ、これがキー・ファイルへのフル・パス名です。このファイルには、dmconfigファイルのすべてのパスワードを暗号化するために使用されているキーが含まれます。
dmconfig
java.lang.String
C:\tuxedo\config.xml
dmconfigベースの構成の場合のみ、これがTuxedo JCA Adapter構成ファイルへのフル・パス名です。

注意: パス情報を含まない場合、リソースとみなされます。

appManagedLocalTxTimeout
java.lang.Integer
デフォルト値300秒
Tuxedo JCA Adapterによって管理される、ローカル・トランザクションのトランザクション・タイムアウト値。
throwFailureReplyException
java.lang.Boolean
デフォルト値true
CCI実行インタフェースをカスタマイズして、Oracle Tuxedoサービスが失敗応答を戻した場合に、例外と、出力データ・レコード内の失敗応答データのどちらをスローするか決定します。
autoTran
java.lang.Boolean
デフォルト値なし
AUTOTRANの有効/無効を切り替えます。デフォルトでは、AUTOTRANはありません。

トレース・レベル・サポート

表30に、トレース・レベル制御値を示します。

表30 トレース・レベル制御値
トレースされるコンポーネント
説明
20000
GWT_IO
ゲートウェイ入出力(ATMI動詞を含む)。
25000
GWT_EX
他のゲートウェイ情報。
50000
JATMI_IO
JATMI入出力(下位レベルJATMI呼出しを含む)。
55000
JATMI_EX
他のJATMI情報。
100000
すべてのコンポーネント
すべてのTuxedo JCA Adapterコンポーネントに関する情報。

注意: 20,000未満のトレース・レベルではトレースは実行されません。

リスト38に、カスタマイズ・プロパティを使用するデプロイメント記述子ファイルの例を示します。

リスト38 カスタマイズしたデプロイメント記述子ファイルの例
<config-property>
  <config-property-name>traceLevel</config-property-name>
  <config-property-type>java.lang.String</config-property-type>
  <config-property-value>0</config-property-value>
</config-property>
<config-property>
  <config-property-name>xaAffinity</config-property-name>
  <config-property-type>java.lang.String</config-property-type>
  <config-property-value>true</config-property-value>
</config-property>
<config-property>
  <config-property-name>keyFileName</config-property-name>
  <config-property-type>java.lang.String</config-property-type>
<config-property-value>foo.key</config-property-value>
</config-property>
<config-property>
  <config-property-name>dmconfig</config-property-name>
  <config-property-type>java.lang.String</config-property-type>
<config-property-value>dmconfig.xml</config-property-value>
</config-property>
<config-property>
  <config-property-name>throwFailureReplyException</config-property-name>
  <config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>true</config-property-value>
</config-property-value>
</config-property>
<config-property>
  <config-property-name>appManagedLocalTxTimeout</config-property-name>
  <config-property-type>java.lang.Integer</config-property-type>
  <config-property-value>15</config-property-value>
</config-property>

Oracle Tuxedo JCA Adapterの再パッケージ化

大部分のアプリケーション・サーバーでは、リソース・アダプタを非アーカイブ形式でデプロイすることが許容されています。しかし、リソース・デプロイメント記述子を変更したら、アダプタを再パッケージ化してからデプロイするのがベストです。

再パッケージ化には、JDK付属の"jar"コマンドを使用して、Tuxedo JCA Adapterをリソース・アーカイブに変換する必要があります。リソース・アーカイブは".rar"という拡張子を持っています。

たとえば、リソース・アーカイブのルート・ディレクトリから、次のコマンドを使用します:
jar -cvf ../com.oracle.tuxedo.TuxedoAdapter.rar *

コネクタ接続プール・サイズの変更

アプリケーション・サーバーには、デフォルトの接続プール・サイズがあります。大部分のアプリケーションでは、デフォルト接続プール・サイズに余裕がありますが、状況により、デフォルト接続プール・サイズでは十分でない場合があります。たとえば、Oracle WebLogicサーバーは10というデフォルト接続プール・サイズを持っています。これは、同じアダプタを使用してリモートの企業情報システム(EIS)にアクセスするために、最大で10台の同時JCAクライアントをサポートできることを意味します。あるアプリケーションが、Tuxedo JCA Adapterを使用して10台以上の同時クライアントをサポートする場合、アプリケーションは接続プール・サイズを拡張する必要があります。

たとえば、Oracle WebLogicサーバー・インストールにおいて、デフォルト値から20まで接続プール・サイズを変更するには、リスト39に示すように、META-INFディレクトリでweblogic-ra.xmlファイルを変更します。

リスト39 Oracle WebLogicコネクタ接続プール・サイズの変更
 <outbound-resource-adapter>
  <default-connection-properties>
    <pool-params>
      <initial-capacity>15</initial-capacity>
      <max-capacity>20</max-capacity>
    </pool-params>
  </default-connection-properties>
  <connction-definition-group>
  ...
  </connection-definition-group>
</outbound-resource-adapter>
注意: 接続プール・サイズの構成方式はアプリケーション・サーバーによって異なります。一部のアプリケーション・サーバーでは、カスタム・デプロイメント記述子を使用して、接続プール・サイズを構成します(Oracle WebLogic Serverなど)。別のアプリケーション・サーバーでは、コンソール構成を使用します(IBM WebSphereなど)。
注意: 詳細は、アプリケーション・サーバーのドキュメントを参照してください。

 


Oracle Tuxedo JCA Adapter管理

Tuxedo JCA Adapterをデプロイした後に、アプリケーションを拡張または変更したくなることがあります。その場合、アダプタ構成を変更する必要があります。Tuxedo JCA Adapter構成の変更には、テキスト・エディタまたはXMLエディタを使用して、構成されたアダプタ構成の内容を変更することが含まれます。

Oracle WebLogicサーバーおよびJBOSSアプリケーション・サーバー環境では、次の手順を実行する必要があります。

  1. 構成ファイルを変更します。
  2. アダプタを停止します。
  3. 新しい構成ファイルでアダプタを再起動します。
注意: IBM WebSphereアプリケーション・サーバーの場合、アプリケーション・サーバーを停止してから再起動する必要があります。

実行時の構成更新

Tuxedo JCA Adapterが実行時の動的な構成変更をサポートする際には、構成の変更を有効にするために停止して再起動します。

 


Oracle Tuxedo JCA Adapterのフェイルオーバー機能

Tuxedo JCA Adapterは、リンク・レベルのフェイルオーバーとサービス・レベルのフェイルオーバーの両方をサポートします。リンクレベルのフェイルオーバーによって、ユーザーは異なるアクセス・ポイント・ネットワーク・アドレスを指定できるようになります。これは、ローカル・アクセス・ポイントとリモート・アクセス・ポイントの両方に適用できます。

dmconfigファイル構成では、RemoteAccessPointLocalAccessPointに、複数のNetworkAddress要素を指定できます。これらのネットワーク・アドレスの順序は、プリファレンスの順序を表しています。Tuxedo JCA Adapterは、リスニングのエンドポイントを確立するために、LocalAccessPointの1つ目のネットワーク・アドレスを使用しようとします。失敗すると、次のネットワーク・アドレスを試します。これは、リスニング・エンドポイントが確立されるまで、またはすべてのネットワーク・アドレスが使い果たされるまで行われます。

Tuxedo JCA Adapterは、リモートのOracle Tuxedo GWTDOMAINゲートウェイとの接続を確立するために、1つ目のネットワーク・アドレスの使用を試みます。失敗すると、次のネットワーク・アドレスを試します。これは、接続が確立されるまで、またはすべてのネットワーク・アドレスが使い果たされるまで行われます。ただし、リンクレベルのフェイルバックはありません。リスト40は、dmconfigファイル構成を使用して、ローカル・アクセス・ポイントLDOM1がリンクレベルのフェイルオーバーに対して2つのネットワーク・アドレスを持つ例を示しています。また、リモート・アクセス・ポイントRDOM1がリンクレベルのフェイルオーバーに対して2つのネットワーク・アドレスを持っていることも示しています。

リスト40 リンク・レベル・フェイルオーバーの例
... 
<LocalAccessPoint name="LDOM1">
   <AccessPointId>Godfried</AccessPointId>
   <NetworkAddress>//neocortex:14001</NetworkAddress>
   <NetworkAddress>//cerebrum:14002</NetworkAddress>
</LocalAccessPoint>
<RemoteAccessPoint name="RDOM1">
   <AccessPointId>Geneve</AccessPointId>
   <NetworkAddress>//bluestar:11023</NetworkAddress>
   <NetworkAddress>//orion:11023</NetworkAddress>
</RemoteAccessPoint>
...

リンクレベルのフェイルオーバーの他に、Tuxedo JCA Adapterはサービスレベルのフェイルオーバーもサポートします。サービスレベルのフェイルオーバーは、リモートのOracle Tuxedoリソースにアクセスできる代替のセッションを指定します。これは、コンマ区切りリストです。ロード・バランシングとは異なります。サービスレベルのフェイルオーバーを使用できるのは、ConnectionPolicyON_STARTUPに等しい場合だけです。他のタイプのConnectionPolicyには、ロード・バランシングのみがあります。

サービスレベルのフェイルオーバーが有効な場合、プライマリ・セッションのセッション・ステータスを確認します。そのステータスが接続済でない場合、最初のバックアップ・セッションを確認します。以下、バックアップ・セッションに接続済ステータスが検出されるか、構成されているバックアップ・セッションをすべて使い果たすまで、同様に続きます。

リスト41は、インポートされたリソースTOUPPERが、session_1session_2の間でロード・バランシングされる例を示しています。

リスト41 ロード・バランシングの例
... 
<Import name="TUXTOUPPER">
   <SessionName>session_1</SessionName>
   <SessionName>session_2</sessionName>
   <LoadBalancing>RoundRobin</LoadBalancing>
</Import>
...

リスト42では、ロード・バランシングのみならず、サービス・レベルのフェイルオーバーも可能な例を示します。

リスト42 サービス・レベルのフェイルオーバーを伴うロード・バランシングの例
... 
 <Import name="TUXTOUPPER"> 
    <SessionName>session_1,session_3</SessionName>
    <SessionName>session_2,session_3</sessionName>
    <LoadBalancing>RoundRobin</LoadBalancing>
</Import>
 ... 

前述の構成は、session_1session_2の間のロード・バランシングです。session_1が使用できない場合、ロード・バランシング・アルゴリズムがsession_1の番と判定したときに、session_3にサービス・リクエストが転送されます。session_2についても同様です。この事例ではsession_3もsession_2をバックアップします。

特定のインポート済リソースのすべてのセッションに対して、ConnectionPolicyON_STARTUPに設定されている場合、サービスレベルのフェイルバックは自動です。前述の例でsession_1が使用できない場合、session_1に宛てられたすべてのサービス・リクエストが、session_3にルーティングされます。session_1が使用可能になると、サービス・リクエストは、プライマリ・ルートのsession_1にルーティングされます。

 


Oracle Tuxedo JCA Adapterセキュリティ

Tuxedo JCA Adapterは、リンクレベルの暗号化またはSecured Socket Layerを使用するデータ・セキュリティをサポートします。また、アプリケーション・サーバーからOracle TuxedoへのアウトバウンドID通知機能もあります。これにより、Oracle Tuxedoリソースのアクセスをきめ細かく制御できます。

セキュリティを確保するためにDMConfigCheckerユーティリティが使用されます。このユーティリティは、構成ファイルをスキーマと照合するだけでなく、パスワードを暗号化形式に変換してセキュリティを向上させます。暗号化が必要な場合、Tuxedo JCA Adapterを開始する前にDMConfigCheckerを実行する必要があります。詳細は、 『Oracle Tuxedo JCAリファレンス・ガイド』を参照してください。

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

リンク・レベルの暗号化(LLE)

リンク・レベルの暗号化(LLE)は、Tuxedo JCA AdapterとTuxedo TDomainゲートウェイの間のすべてのユーザー・メッセージ・フローを暗号化する、高速の独自規格テクノロジです。40ビット、56ビットおよび128ビット暗号強度をサポートします。この機能を有効にするには、アダプタ構成の SessionProfileで、MaxEncryptBitsMinEncryptBitsを構成します。

MaxEncryptBitsのデフォルト値は128-bitで、MinEncryptBitsのデフォルト値は0です。両方の要素で許される値は、0(暗号化なし)、40-bit56-bit128-bitおよび256-bitです。256-bit暗号化は、SSL AES 256ビット暗号化用です(LLEは256ビット暗号化をサポートしません)。MinEncryptBits値はMaxEncryptBits値以下である必要があります。

注意: SSLが構成されていず、MaxEncryptBitsが256ビットに設定されている場合、MaxEncryptBitsは最大の128ビットLLEにスケールダウンされます。
注意: LLEは、GWTDOMAINゲートウェイでも構成する必要があります。

Secured Socket Layer (SSL)暗号化

Tuxedo JCAアダプタは、Secure Socket Layer (SSL)暗号化もサポートします。SSL暗号化を有効化するには、次の手順を実行する必要があります。

Javaキー・ストア(JKS)がサポートされます。IdentityKeyStoreFileNameTrustKeyStoreFileNameは、どちらもJKSタイプを参照します。

注意: 相互認証はデフォルトで無効ですが、MutualAuthenticationRequired要素をtrueに設定することで有効にできます。

サンプルのSSLInfo構成例を、リスト43に示します。

リスト43 SSLInfo構成の例
<LocalAccessPoint name="jdom">
...
  <SSLInfo>
<IdentityKeyStoreFileName>c:\test\cert\test_users.jks</IdentityKeyStoreFileName>
<IdentityKeyStorePassPhraseEncrypted>passphrase</IdentityKeyStorePassPhraseEncrypted>
    <PrivateKeyAlias>tester</PrivateKeyAlias>
<PrivateKeyPassPhraseEncrypted>passphrase</privatekeypassphraseencrypted>
    <TrustKeyStoreFileName>c:\test\cert\trusted.jks</TrustKeyStoreFileName>
<TrustKeyStorePassPhraseEncrypted>passphrase</TrustKeyStorePassPhraseEncrypted>
  </SSLInfo>
</LocalAccessPoint>

この例では、DMConfigCheckerユーティリティを先に実行することで、Tuxedo JCA Adapterがユーティリティを使用できるようになります(暗号化が必要な要素が3つあるため)。

セッション認証

SSLが構成されない場合、Tuxedo JCA Adapterはセッション認証をサポートしますが、SessionProfileの「Security」が、「DM_PW」または「APP_PW」を使用して構成されている必要があります。

セキュリティが「APP_PW」を使用して構成されている場合、Oracle Tuxedoのアプリケーション・パスワードをキーとして使用して、認証者を暗号化/復号します。Tuxedo JCA Adapterには、1つのアプリケーション・パスワードのみを構成できます。このパスワードは、構成ファイル内のResources "ApplicationPasswordEncrypted"要素で構成されます。

セキュリティが「DM_PW」で構成されている場合、ドメイン・パスワードをキーとして使用して、認証者を暗号化復号します。構成されるいかなるセッションに対しても、最大で2つのパスワード・ペアを構成できます。

各パスワード・ペアは、1つのローカル・パスワードと1つのリモート・パスワード、およびそのアクティブ化/非アクティブ化時刻から構成されています。アクティブ化/非アクティブ化時刻では、書式「YYYY:MM:DD:hh:mm:ss」を使用します(例: 2009:01:01:12:00:00)。

非アクティブ化時刻は、アクティブ化時刻より後である必要があります。アクティブ化時刻を指定しない場合、アダプタが起動したときに、パスワードがすでにアクティブ化されていることを示します。非アクティブ化時刻を指定しない場合、パスワードは決して期限切れになりません。

セッションがすでに確立されている間にパスワード・ペアが期限切れになっても、セッションは無効にならず、セッション・ネゴシエーション・プロセスが再起動されます。ただし、ネゴシエーションが開始されるにパスワード・ペアが期限切れになった場合、そのパスワード・ペアは認証に使用されません。セッション認証の際に、有効なパスワード・ペアが検出されない場合、セッションを確立できません。

ローカル・アクセス・ポイントでSSLが必要な場合、そのローカル・アクセス・ポイントとあらゆるリモート・アクセス・ポイントの間のセッションではSSLを使用して、データ保護メカニズムを明確に示します。この場合、SessionProfile/Securityが正しい値に構成されていても、セッション認証は実行されません。

Appkeyジェネレータ

AppKeyジェネレータは、アプリケーション・サーバーからOracle Tuxedoに送信されるユーザー情報を決定するために使用されるプラガブル・クラスです。Oracle Tuxedoは、この情報を使用して、Oracle Tuxedoリソースへのユーザー・アクセス権を決定します。これは、ACLとも呼ばれます。

Tuxedo JCA AdapterにはデフォルトのAppKeyジェネレータ・クラスが事前構成されており、デフォルトのOracle Tuxedo認証、認可および監査プラグイン(AAA)で機能します。ただし、デフォルトOracle Tuxedo AAAプラグインを使用するアクセス制御が必要な場合、リモート・アクセス・ポイントでTpusrFile要素を構成する必要もあります。RemoteAccessPointTpusrFile要素は、Oracle Tuxedoのtpusrファイルを参照します。

それを実行する最も簡単な方法は、ファイルをOracle Tuxedoからコピーするか、Oracle Tuxedoと共有することです(両方とも同じマシン上で動作している場合)。RemoteAccessPoint TpusrFileファイルが構成されていない場合、Oracle JCA AdapterはResourcesセクションでもTpusrFileファイルを探します。

また、CredentialPolicyを「Global」に設定して、AAAセキュリティ・トークンがTuxedo JCA AdapterからOracle Tuxedoアプリケーション・ドメインにネットワークを横断して移動できるようにする必要もあります。

RemoteAccessPointにある他の構成要素を使用すると、AppKeyジェネレータ・プラグインをさらにカスタマイズできます。AllowAnonymous要素は、Oracle Tuxedoへの匿名アクセスを許すかどうかをアダプタに指示します。

注意: デフォルトでは、匿名アクセスは許容されません。アプリケーション・サーバーは認証を実行します。

DefaultApplicationKeyは、Oracle Tuxedoにアクセスするために匿名ユーザーが使用するキー値です(デフォルト値は「-1」です)。デフォルトのAppKeyジェネレータは、匿名のユーザー名が「anonymous」と想定しています。

アイデンティティ通知を成功させるためには、(以前に説明したすべての構成オプションに加えて)ホスト・アプリケーション・サーバーのJCAコンテナで「Principal Mapping」情報を構成する必要があります。

詳細は、ターゲット・アプリケーション・サーバーのドキュメントを参照してください。

Oracle JCAアダプタ構成ファイル・アイデンティティ通知の例を、リスト44に示します。

リスト44 アイデンティティ通知の例
<RemoteAccessPoint name="tdom">
  ...
  <TpusrFile>c:\test\data\tpusr</TpusrFile>
  <AllowAnonymous>true</AllowAnonymous>
  ...
</RemoteAccessPoint>
<SessionProfile name="prof_1">
  ...
  <CredentialPolicy>global</CredentialPolicy>
  ...
</SessionProfile>

 


JATMIアウトバウンド会話

JATMI会話の概要

Oracle Tuxedo Application-To-Monitor-Interface (ATMI)は、使いやすい会話モデルを定義します。この項では、Tuxedo JCA Adapterの機能を使用する方法を説明します。アプリケーション・アーキテクチャでATMIスタイルの会話を利用する必要があるアプリケーションと併用することを目的としています。

ATMI会話は、Javaクライアントによって開始される会話(JavaクライアントとOracle Tuxedo会話型サーバーの間のアウトバウンド会話)を処理するために追加されたTuxedo JCA Adapter拡張機能です。

注意: この製品は、Oracle Tuxedo ATMIクライアントからのインバウンド会話をサポートしません。

Oracle Tuxedo ATMI会話は半二重会話です(つまり制御された方法で送受信が行われます)。会話の制御権を持っている側がデータを送信できます。そちらの側が会話の制御権を放棄するときには、データとともにTPRECVONLYフラグを送信します。相手側が最後のデータを受信すると、TPSENDONLYに変換されているフラグを参照して、会話の制御権を取得したことを認識します。

単純な会話の説明

Javaクライアントは、tpconnect()をコールすることによって会話を開始し、リモートのOracle Tuxedo会話型サーバーとの会話を確立します。Javaクライアントは、tpsend()を使用して、リモートの会話型サーバーにデータを送信し続けることができます。Javaクライアントがデータを送信し終わると、サーバーに最後のtpsend()とともにTPRECVONLYフラグを送信します。

サーバーがこのデータを受信すると、Javaクライアントがデータを送信するときであると判断するまでの間、逆にJavaクライアントに向けてデータを送信します。会話が完了するまで、これらの送受信シーケンスが数回繰り返されます。会話が完了するとサーバーはtpreturn()を送信し、Javaクライアントは会話が完了したことを示すイベントを受信します。

会話の制限事項

JavaクライアントとOracle Tuxedoサーバーの間の制御交代数の上限値は32768です。

JATMIアウトバウンド会話の使用

アウトバウンド会話は、次のJavaクライアント用Oracle Tuxedo ATMI会話型サービス・インタフェースをサポートします。

会話制御の交代は、tpconnecttpsendおよびtprecvメソッド用の1ペアのフラグを使用して行われます。これらのフラグは、weblogic.wtc.jatmi.TPExceptionクラスで定義されます。そのフラグは次のとおりです。

Javaクライアントは、Tuxedo JCA AdapterのInteractionクラス、TuxedoInteractionの実装に含まれるtpconnect()機能拡張を使用して会話を開始します。会話が正常に開始された場合、TuxedoInteractionクラスのtpconnect()メソッドが、会話オブジェクトを戻します。Javaクライアントは戻された会話オブジェクトを使用して、引き続き、tpsend()およびtprecv()オブジェクト・インタフェースを使用してOracle Tuxedo会話型サーバーと通信できます。

通常の会話が完了するには、Oracle Tuxedo会話型サーバーが会話の制御権を持っている必要があります。それが、サービス・ルーチンでtpreturn()を介して会話を正常に終了します。この場合、Javaクライアントは、会話イベント「TPEV_SVCSUCC」(あるいは「TPEV_SVCFAIL」)でTPReplyExceptionを受信するはずです。

JATMI会話モデルは、TPReplyExceptonを使用して会話イベントを搬送します。会話イベントをJavaクライアントに伝達する必要がある場合、Tuxedo JCA AdapterはTPReplyExceptionを送出します。

TPReplyExceptionは、Oracle Tuxedo会話型サーバーから戻されたデータを搬送することもできます。JavaクライアントがTPReplyExceptionを捕捉する場合、イベントとデータの両方を確認する必要があります。会話イベントには2つのタイプがあります。

TPEV_DISCONIMMTPEV_SVCSUCCTPEV_SVCERRTPEV_SVCFAILは会話完了ステータスを示すタイプです。これらの3つのイベントのいずれかが発生した場合、会話はすでに失効しています。会話オブジェクトは使用しないでください。TPEV_SENDONLYは会話制御権の交代イベントのタイプです。このイベントが発生した場合、Javaクライアントが会話の制御権を再取得します。

イベントがない場合(データを伴っていてもいなくても)、tprecv()は例外なしに正常に戻し操作を行います。接続、プロトコルおよび構成に関連するエラーが発生した場合、Tuxedo JCA AdapterによってTPExceptionが送出されます。前述の具体例では、Oracle Tuxedo会話サーバーはtpreturn(TPSUCCESS)を開始し、クライアントはtprecv()を開始して、TPReplyException.からTPEV_SVCSUCCイベントを取得します。

JATMI会話拡張機能

新しいメソッド(Oracle Tuxedo会話型サーバーとの会話を開始するために使用されるtpconnect())が、com.oracle.tuxedo.adapter.cci.TuxedoInteractionクラスに追加されました。この新しいATMI会話にアクセスするには、Connection.createInteraction()からTuxedoInteractionクラスに戻されたInteractionオブジェクトを型キャストして、JATMI会話機能拡張へのアクセス権を取得する必要があります。

リスト45に、TuxedoInteractionクラスのtpconnectインタフェース定義の例を示します。

リスト45 TuxedoInteractionクラスのtpconnectインタフェース定義
import weblogic.wtc.jatmi.Conversation;
public Conversation tpconnect(String svcname, TypedBuffer data, int flags) throws TPException;

tpconnect()のflagsフィールドにTPSENDONLYまたはTPRECVONLYを指定する必要があります。リスト46に示すように、この2つのフラグはweblogic.wtc.jatmi.ApplicationToMonitorInterfaceクラスで定義されます。

JATMI会話オブジェクト

com.oracle.tuxedo.adapter.cci.TuxedoInteractionクラスのtpconnect()インタフェースは、weblogic.wtc.jatmi.Conversation会話オブジェクトを戻します。戻された会話オブジェクトを使用して、Oracle Tuxedo会話型サーバーと会話できます。

リスト47に、インタフェース宣言の例を示します。

リスト47 インタフェース宣言の例
public void tpsend(TypedBuffer data, int flags) throws TPException;
public Reply tprecv(int flags) throws TPException, TPReplyException;
public void tpdiscon() throws TPException;

インタフェース・メソッドtpsend

Public void tpsend(TypedBuffer data, int flags) throws TPException。このメソッドは、JavaクライアントからOracle Tuxedo会話型サーバーに、オープンな会話を介してデータを送信します。Javaクライアントが会話の制御権を持っている必要があります。Javaクライアントが不適切なコンテキストで(つまり会話制御権なしに)tpsend() を開始すると、TPException.TPEPROTOエラーを受信します。

flagsフィールドは次のとおりです。

エラーが発生するとTPExceptionが送出されます。TPExcepiton.gettperrno()をコールすることによってエラー・コードを取得できます。次に、可能なTPExceptionエラーのリストを示します。

インタフェース・メソッドtprecv

Public Reply tprecv(int flags) throws TPException, TPReplyException。このメソッドは、Javaクライアントが、オープンな会話を介してOracle Tuxedo会話型サーバーで送信されるデータを受信するために使用します。このメソッド・コールは、Javaクライアントが会話制御権を持たない場合にのみ発行できます。Javaクライアントがこのメソッドを不適切にコールすると(つまり、まだ会話制御権がある場合)、TPException.TPEPROTO例外が送出されます。状況の性質に応じて、このメソッドは、TPExceptionまたはTPReplyExceptionのいずれかを送出できます。

ここでは通常、TPReplyExceptionを使用して、Oracle Tuxedo会話サーバーからのイベント(会話完了や会話制御権の交代など)を伝達します。ただし、データ受信時に予期しないエラーが発生したためにTPExceptionを送出することがあります(このメソッドを不適切にコールした、ネットワーク・エラーが発生したなど)。

会話にイベントが存在する場合、tprecv()TPERRNOTPException.TPEEVENTに設定してTPReplyExceptionを戻します。イベント・タイプも戻されます。JavaクライアントはTPReplyException.getrevent()を呼び出して、それを取得できます。次に、有効なイベントのリストを示します。

エラーが発生するとTPExceptionが送出されます。TPExcepiton.gettperrno()をコールすることによってエラー・コードを取得できます。次に、可能なTPExceptionエラーのリストを示します。

Tuxedo JCA Adapterまたはリモート・アクセス・ポイントに問題が発生しました。Javaクライアント・コードは両方の例外型を捕捉し、それに応じて処理する必要があります。Javaクライアントの場合、会話は常にtprecv()で終わります。この最後のtprecv()は、Oracle Tuxedo会話サーバーのtpreturn()に対応します。Javaクライアントが、ConnectionFactory.getConnection()を介して取得したConnectionを使用して実行される場合、Connection.close()をコールすることで、プールにConnectionを戻す必要があります。そうできない場合、Connectionリークを引き起こします。

インタフェース・メソッドtpdiscon

public void tpdiscon() throws TPException;

tpdiscon()メソッドは、会話オブジェクトによって表現された会話を即時破棄します。このメソッドをコールできるのは、会話の開始側(Javaクライアント)のみです。Java会話型クライアントはtpdiscon()を使用して会話を破棄できますが、Oracle Tuxedo会話型サーバーを使用してtpreturn()を使用する接続を破棄させる方が好都合です。それにより、確実に正しい結果が得られます。

会話の制御権

会話の制御権の放棄

Javaクライアントは、会話イベントの発生時にTPReplyExceptionを受け取ります。JavaクライアントはTPRecplyException.gettperrno() をコールしてイベントが発生したかどうかを判断し、TPReplyException.getrevent()を使用して会話イベントを取得する必要があります。

リスト48に、会話の制御権を放棄する場合の例を示します。

リスト48 会話の制御権の放棄
try {
  myConversation.tpsend(myData, ApplicationToMonitorInterface.TPRECVONLY);
}
Catch (TPException tpe) {
}
try {
  myConversation.tpsend(myData, ApplicationToMonitorInterface.TPRECVONLY);
}
Catch (TPException tpe) {
}

会話の制御権の再取得

Tuxedo JCA AdapterのJava会話型クライアントは、tprecv()のコール時に、TPReplyException内部のTPEV_SENDONLYイベントを受信すると、会話制御権を再取得できます。Javaクライアントは、戻されたTPERRNOをチェックして、会話イベントが存在するかどうかを確認する必要があります。続いて、リスト49に示すようにイベントを取得します。

リスト49 会話の制御権の再取得
while (…) {
  Try {
    rply = myConversation.tprecv(0);
  }
  catch (TPReplyException tre) {
    switch (tre.gettperrno()) {
    case TPException.TPEEVENT:
      switch (tre.getrevent()) {
      case TPException.TPEV_SENDONLY:

会話イベントの取得

Oracle Tuxedo会話型サーバーは、tprecv()のコール時にTPEV_SENDONLYイベントを受信すると、会話制御権を再取得できる可能性があります。tpsend()TPRECVONLYでコールすると、会話の制御権を放棄することもできます。

リスト50 会話イベントの取得
try {
  myRtn  = myConversation.tprecv();
  }
Catch (TPReplyException tre) {
  Switch (tre.gettperrno()) {
  Case TPException.TPEEVENT:
    Switch (tre.getrevent() {
    Case TPException.TPEV_SENDONLY:
      /* got the control of the conversation */
    }
  }

}

構成

会話をするのに必要な特別な構成はありません。しかし、正しく構成されたOracle Tuxedo会話サーバーがTUXCONFIGで提示される必要があります。このサーバーはBDMCONFIGによってサービスをエクスポートします。Tuxedo JCA Adapterの場合、デフォルトのImportが機能するように、Importを構成しないことを選択するか、インポートされたすべてのOracle Tuxedoサービス(会話サービスを含む)にImportを構成しておくことができます。

Oracle Tuxedo構成

Oracle Tuxedoサーバーは、リスト51に示すように、会話型サーバーとして構成される必要があります。

リスト51 会話型サーバー
*SERVERS
DEFAULT:
	CLOPT="-A" RESTART=Y MAXGEN=5
Convserv    SRVGRP=GROUP4 SRVID=41 CONV=Y

前述の例で、Oracle Tuxedoサーバー「Convserv」は、「CONV=Y」で設定された会話型サーバーです。

完全なOracle Tuxedo構成ファイルは、「サンプル会話アプリケーション」で提供されます。

Oracle Tuxedo Domainの構成

会話サービスは、BDMCONFIGファイル内の構成を使用して、Tuxedo GWTDOMAINによってエクスポートされる必要があります。たとえば、「Convserv」がサービス「CTOUPPER」を提供している場合、「CTOUPPER」はBDMCONFIGファイルを介してエクスポートされる必要があります。

*DM_LOCAL_SERVICES
CTOUPPER

Oracle Tuxedo JCA Adapter構成

Oracle Tuxedo Domainによってエクスポートされた同じサービスは、Tuxedo JCA Adapterによってインポートされる必要があります。2つの選択肢があります。

インポートされたリソースを一切構成しないことを選択すると、Tuxedo JCA Adapterのデフォルト・インポート機能が開始されます。この場合、Tuxedo JCA Adapterは、Javaクライアントによって要求された外部リソースが実際に存在するかどうかに関係なく、パートナのOracle Tuxedo Domainに、GWTDOMAINゲートウェイを介してサービス・リクエストを転送します。

インポートされたリソースを構成するよう選択すると、明示的に構成されている外部リソースをコールするサービス・リクエストのみが許可されます。構成されていない外部リソースを要求するサービス(通常はOracle Tuxedoサービス)はすべて拒否され、TPException.TPENOENTエラーを送出します。

リスト52に、Tuxedo JCA Adapter dmconfigファイルのインポートされたリソースの例を示します。

リスト52 Tuxedo JCA Adapter dmconfigファイルのインポートされたリソース
<Import name="CTOUPPER">
  <RemoteName>CTOUPPER</RemoteName>
  <SessionName>session_1</SessionName>
  <LoadBalancing>RoundRobin</LoadBalancing>
</Import>

会話アプリケーション例

リスト53に、非常に単純な完全なアプリケーションの例を示します。

  1. クライアントは、tpconnect()をdataで開始することで、会話を開始します。
  2. クライアントは、tpsend()をコールして第2のデータ片を送信し、Oracle Tuxedo Serverに制御権を付与します。
  3. Oracle Tuxedoサーバーはtpsend()を開始し、さらにtpreturn()をコールして会話を終了します。

Oracle Tuxedoサーバー・アプリケーション

これは、アプリケーションのOracle Tuxedo Conversationサーバー部分です。

ソース・ファイルの名前は「convsimp.c」です。

リスト53 Oracle Tuxedo会話型サーバー
Oracle Tuxedo Server Applicatiov/* 
 * Copyright (c) 2012 by Oracle. All Rights Reserved.
 */
#include <tmenv.h>
#include <stdio.h>
#include <ctype.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <atmi.h>	/* TUXEDO Header File */
#include <userlog.h>	/* TUXEDO Header File */
#include <Uunix.h>	/* TUXEDO Header File */
#if defined(__STDC__) || defined(__cplusplus)
tpsvrinit(int argc, char *argv[])
#else
tpsvrinit(argc, argv)
int argc;
char **argv;
#endif
{
tpopen();
	userlog("tpsvrinit(10) Welcome to the conversational simple server");
	return(0);
}
#ifdef __cplusplus
extern "C"
#endif
void
#if defined(__STDC__) || defined(__cplusplus)
MYCONV(TPSVCINFO *rqst)
#else
MYCONV(rqst)
TPSVCINFO *rqst;
#endif
{
	long	revent;
	long	the_len;
	long	ret;
	long	flags;
	char*   line = NULL;
	userlog("> MYCONV()");
	if ((line = tpalloc("STRING", "", 1024)) == (char *)NULL) {
		userlog("< MYCONV(10) failed to allocate STRING buffer");
		tpreturn(TPFAIL, 0, NULL, 0, 0);
	}
  	 the_len = rqst->len;
  	 userlog("receive rqst->data %p, the len = %d", rqst->data, the_len);
                if (rqst->data != NULL && the_len > 0) {
    		userlog("recv data #1: %s", rqst->data);
 	  }
	if (rqst->flags & TPSENDONLY) {
		userlog("rqst->flags & TPSENDONLY");
		goto send_data;
	}
	userlog("call tprecv()");
if (tprecv(rqst->cd, &rqst->data, &the_len, TPNOCHANGE, &revent) != -1) {
                             userlog("receive rqst->data %p, the len = %d", rqst->data, the_len);
        		 if (rqst->data != NULL) {
          			 userlog("recv data #2: %s", rqst->data);
         		}
	}
	/* check for event */
	if ((tperrno == TPEEVENT) && (revent == TPEV_SENDONLY)) {
		userlog("recv revent = TPEV_SENDONLY");
	}
	else {
		/* this is not what I expected */
		userlog("< MYCONV(20) invalid errno %d(%s) or event 0x%lx",
			tperrno, tpstrerror(tperrno), revent);
		tpreturn(TPFAIL, 1, rqst->data, rqst->len, 0);
	}
	userlog("1st tprecv() successful");
send_data:
	userlog("start 1st tpsend()");
	(void)strcpy(line, "return data #1");
	revent = 0;
	if (tpsend(rqst->cd, line, strlen(line)+1, 0, &revent) == -1) {
		(void) userlog("MYCONV(20) tpsend error");
		if(tperrno == TPEEVENT) {
			userlog("< MYCONV(30) got event: 0x%lx", revent);
		}
		else {
			userlog("< MYCONV(40) tperrno = %d (%s)",
				tperrno, tpstrerror(tperrno));
		}
		/* this is not what I expected */
		tpreturn(TPFAIL, 2, rqst->data, rqst->len, 0);
	}
	userlog("1st tpsend() successful");
	userlog("< MYCONV() return(50) TPSUCCESS");
	(void)strcpy(line, "my final data");
	tpreturn(TPSUCCESS, 0, line, strlen(line) + 1, 0);
}
Tuxedo会話型サーバーのビルド

Oracle Tuxedo会話型サーバーと通常のサーバーの構築に違いはありません。前述のOracle Tuxedo会話型サーバーをビルドするには、次のコマンドを発行します。

buildserver -f convsimp.c -o convsimp  -s MYCONV
Oracle Tuxedo構成ファイル

リスト54に、Oracle Tuxedo構成ファイルの例を示します。

リスト54 Oracle Tuxedo構成ファイル
#Ubbconfig of Tuxedo Domain
#
*RESOURCES
IPCKEY			51301
MASTER			site1
MAXACCESSERS	100
MAXSERVERS		25
MAXSERVICES		50
MODEL				SHM
LDBAL				N
BLOCKTIME 	10
SCANUNIT		5
SECURITY        NONE
*MACHINES
DEFAULT:
		APPDIR="C:\test\JCA\tdom"
		TUXCONFIG="C:\test\JCA\tdom/TUXCONFIG"
		TUXDIR="c:\tuxedo\Tuxedo11gR1PS1"
"NEOCORTEX	"LMID=site1
		MAXWSCLIENTS=2
*GROUPS
GROUP1 LMID=site1 GRPNO=1	OPENINFO=NONE
GROUP2 LMID=site1 GRPNO=2	OPENINFO=NONE
GROUP3 LMID=site1 GRPNO=3	OPENINFO=NONE 
*SERVERS
DEFAULT:
		CLOPT="-A" RESTART=Y MAXGEN=5
DMADM  	SRVGRP=GROUP1	SRVID=21
GWADM  	SRVGRP=GROUP2	SRVID=31
GWTDOMAIN	SRVGRP=GROUP2	SRVID=32
convsimp	SRVGRP=GROUP3	SRVID=41 CONV=Y
*SERVICES
MYCONV

Oracle Tuxedo Domainの構成

リスト55に、Oracle Tuxedo Domainの構成例を示します。

リスト55 Oracle Tuxedo Domainの構成
#
*DM_RESOURCES
#
VERSION=U22
# 
#
#
*DM_LOCAL_DOMAINS
#
#
"TDOM"    GWGRP=GROUP2
	TYPE=TDOMAIN
	DOMAINID="TDOM_ID"
	BLOCKTIME=60
	SECURITY=NONE
#
*DM_REMOTE_DOMAINS
#
#
JDOM 	TYPE=TDOMAIN
	DOMAINID="JDOM_ID"
#
#
*DM_TDOMAIN
#
TDOM	NWADDR="//localhost:12478"
JDOM 	NWADDR="//localhost:10801"
#
#
*DM_LOCAL_SERVICES
#
#Exported
#
MYCONV
#
*DM_REMOTE_SERVICES
#
#Imported
#
Javaクライアント・アプリケーション

ここで、Javaクライアントは、Tuxedo JCA Adapter JATMI拡張機能を利用してOracle Tuxedo会話型サーバーと会話するJava Session Beanとして実装されています。ConnectionとInteractionは、処理が完了したら、会話が成功したかどうかに関係なく、Javaクライアントによってクローズされる必要があります。クローズできないとConnectionのリークが発生します。

リスト56に、WebLogic Server用のJATMIクライアントのコード例を示します。

リスト56 Javaクライアント・アプリケーション
package test.conv.convsimp;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.ejb.CreateException;
import javax.resource.cci.ConnectionFactory;
import javax.resource.cci.Connection;
import javax.resource.cci.Interaction;
import javax.resource.cci.InteractionSpec;
import javax.resource.ResourceException;
import weblogic.ejb.GenericSessionBean;
import weblogic.wtc.jatmi.Reply;
import weblogic.wtc.jatmi.TPException;
import weblogic.wtc.jatmi.TPReplyException;
import weblogic.wtc.jatmi.TypedString;
import weblogic.wtc.jatmi.TypedCArray;
import weblogic.wtc.jatmi.CallDescriptor;
import weblogic.wtc.jatmi.ApplicationToMonitorInterface;
import weblogic.wtc.jatmi.Conversation;
import weblogic.ejbgen.*;
/* the part with Tuxedo JCA Adapter */
import com.oracle.tuxedo.utils.TuxedoLogger;
import com.oracle.tuxedo.adapter.cci.TuxedoStringRecord;
import com.oracle.tuxedo.adapter.cci.TuxedoInteractionSpec;
import com.oracle.tuxedo.adapter.cci.TuxedoConnectionFactory;
import com.oracle.tuxedo.adapter.cci.TuxedoJCAConnection;
import com.oracle.tuxedo.adapter.cci.TuxedoInteraction;
/**
 * TuxConversationBean is a stateful SessionBean. This EJBean illustrates:
 * <ul>
 * <li> The use of the Tuxedo JCA connector.
 * <li> The use of Application-defined exceptions.
 * <li> The use of JATMI conversational extension with Tuxedo Server.
 * </ul>
 * 
 * Copyright (c) 2012 by Oracle. All Rights Reserved.
 */
@FileGeneration(remoteClass = Constants.Bool.TRUE,
                localHome = Constants.Bool.FALSE,
                remoteHome = Constants.Bool.TRUE,
                remoteClassName = "TuxConversation",
                remoteHomeName = "TuxConversationHome",
                localClass = Constants.Bool.FALSE)
@JarSettings(ejbClientJar = "convsimp_client.jar")
@JndiName(remote = "tuxedo.services.TuxConversationHome")
@Session(idleTimeoutSeconds = "600",
         maxBeansInCache = "100",
         transTimeoutSeconds = "0",
         type = Session.SessionType.STATEFUL,
         defaultTransaction = Constants.TransactionAttribute.SUPPORTS,
         ejbName = "TuxConversation")
public class TuxConversationBean extends GenericSessionBean {
  static final boolean VERBOSE = true;
  
  /**
   * This implementation
   * will get the TuxedoConnectionFactory from JNDI, and use it to get
   * an Oracle Tuxedo object, which can then be used to do the actual tpconnect.  
   * TypedString object.
   * @param cmd A string to be used as command or first data item (not null)
   * @param target A string to be used for that target name or send data itme. (not null)
   * @return a string from server
   */
  @RemoteMethod()
  public String Conversation(String cmd, String target) throws TPException, TPReplyException
  {
    String ret = null;
    try {
      ret = doConversation(cmd, target);
    }
    catch (TPReplyException tre) {
      log("TPReplyException: " + tre);
      throw tre;
    }
    catch (TPException te) {
      log("TPException: " + te);
      throw te;
    }
    catch (Exception e) {
      log("Exception: " + e);
      throw new TPException(TPException.TPESVCFAIL, e.getMessage());
    }
    return ret;
  }
  private String doConversation(String cmd, String target) throws TPException, TPReplyException, Exception
  {
    Context                 ctx;
    TuxedoConnectionFactory tcf;
    TuxedoJCAConnection     myTux;  
    TypedString             myData      = null;
    TypedString             returnData1 = null;
    TypedString             returnData2 = null;
    Reply                   myRtn       = null;
    int                     flags;
    Conversation            myConversation;
    TuxedoInteraction       ix;
    log("cmd: " + cmd +  ", target: " + target);
    try {
      ctx = new InitialContext();
      tcf = (TuxedoConnectionFactory)ctx.lookup("eis/TuxedoConnectionFactory");
    }
    catch (Exception ne) {
      ne.printStackTrace();
      log("eis/TuxedoConnectionFactory lookup failed");
      throw new TPException(TPException.TPENOENT, "Could not get eis/TuxedoConnectionFactory:" +
                            ne.getMessage());
    } 
    /*
     * Get connection and interaction
     */
    myTux = null;
    ix    = null;
    try {
      myTux = (TuxedoJCAConnection)tcf.getConnection();
      ix    = (TuxedoInteraction)myTux.createInteraction();
    }
    catch (ResourceException re) {
      re.printStackTrace();
      doClose(myTux, ix);
      log("failed to create interaction");
      throw new TPException(TPException.TPENOENT, "Could not create interaction:" +
                            re.getMessage());
    }
    myData = new TypedString(cmd);   
    if (cmd.equalsIgnoreCase("DoReceiveOnly")) {
      flags = ApplicationToMonitorInterface.TPRECVONLY;
      log( "set flags = TPRECVONLY");
    }
    else {
      flags = ApplicationToMonitorInterface.TPSENDONLY;
      log("set flags = TPSENDONLY");
    }
    /*
     * Get Conversation object.
     */
    try {
      myConversation = ix.tpconnect("MYCONV", myData, flags);
    }
    catch (TPException te) {
      doClose(myTux, ix);
      te.printStackTrace();
      log("get conversation object failure");
      throw te;
    }
    catch (Exception ee) {
      doClose(myTux, ix);
      ee.printStackTrace();
      log(" get conversation object failure");
      throw new TPException(TPException.TPESYSTEM,
                            "failed to get conversation object:  " + ee.getMessage());
    }
    log("tpconnect successful!");
    /*
     * first tpsend(), but 2nd data send.
     */
    if (flags == ApplicationToMonitorInterface.TPSENDONLY) {
       log("first tpsend()");
       myData = new TypedString(target);
      try {
        myConversation.tpsend(myData, ApplicationToMonitorInterface.TPRECVONLY);
      }
      catch (TPException te) {
        te.printStackTrace();
        doClose(myTux, ix);
        log("TPException: " + te);
        throw te;
      }
      log("tpsend successful!");
    }
    /*
     * tprecv() first part of data.
     */
    try {
      log("1 call tprecv()");
      myRtn = myConversation.tprecv(0);
    }
    catch (TPReplyException tre) {
      switch (tre.gettperrno()) {
      case TPException.TPEEVENT:  /* check for conversation event */
        switch (tre.getrevent()) { /* handle according to type of event */
        case TPException.TPEV_SENDONLY:
          log("receive TPEV_SENDONLY");
          /* not expecting change of direction */
          doClose(myTux, ix);
          log(" unexpected SENDONLY event: " + tre);
          throw new TPException(TPException.TPESYSTEM,
                                "Unexpected SENDONLY event:" + tre);
        default:
            // anything else in a RECEIVE state is an error
            doClose(myTux, ix); /* needs to close connection */
            log("unexpected event from server: " + tre);
            throw new TPException(TPException.TPESYSTEM,
                                  "Unexpected tprecv event:" + tre);
        }  /* end of switch event type */
      default:
        doClose(myTux, ix); /* needs to close connection */
        log("got unexpected error from server: " + tre);
        throw new TPException(TPException.TPESYSTEM,
                              "Unexpected tprecv exception:" + tre);
      } /* end of switch tperrno type */
    }
    catch (TPException te) {
      te.printStackTrace();
      doClose(myTux, ix); /* needs to close connection */
      log("tprecv threw TPException: " + te);
      throw te;
    }
    catch (Exception ee) {
      ee.printStackTrace();
      doClose(myTux, ix);
      log("tprecv threw Exception: " + ee);
      throw new TPException(TPException.TPESYSTEM, "Exception: " + ee);
    }
    /*
     * handles returned data
     */
    returnData1 = (TypedString)myRtn.getReplyBuffer();
    log("first receive successful!");
    /*
     *2nd tprecv(), server does a tpreturn()
     */
    try {
      log("2 call tprecv()");
      myRtn = myConversation.tprecv(0);
    }
    catch (TPReplyException tre) {
      switch (tre.gettperrno()) {
      case TPException.TPEEVENT:  /* check for conversation event */
        switch (tre.getrevent()) { /* handle according to type of event */
        case TPException.TPEV_SVCSUCC:
          log("receive TPEV_SVCSUCC");
          myRtn = tre.getExceptionReply();
          break;
        case TPException.TPEV_SVCFAIL:
          doClose(myTux, ix); /* needs to close connection */
          log("unexpected event from server: " + tre);
          throw new TPException(TPException.TPESYSTEM,
                                "Unexpected tprecv event TPEV_SVCFAIL:" + tre);
        case TPException.TPEV_DISCONIMM:
          doClose(myTux, ix); /* needs to close connection */
          log("unexpected event from server: " + tre);
          throw new TPException(TPException.TPESYSTEM,
                                "Unexpected tprecv event TPEV_DISCONIMM:" + tre);
        default:
          // anything else in a RECEIVE state is an error
          log("event = " + tre.getrevent());
          doClose(myTux, ix);
          log("unexpected event from server: " + tre);
          throw new TPException(TPException.TPESYSTEM,
                                "Unexpected tprecv event:" + tre);
        }  /* end of switch event type */
        break;
      default:
        doClose(myTux, ix);  /* needs to close connection */
        log("got unexpected error from server: " + tre);
        throw new TPException(TPException.TPESYSTEM,
                              "Unexpected tprecv exception:" + tre);
      } /* end of switch tperrno type */
    }
    catch (TPException te) {
       doClose(myTux, ix);  /* needs to close connection */
       te.printStackTrace();
       log("tprecv threw TPException: " + te);
       throw te;
    }
    catch (Exception ee) {
       doClose(myTux, ix); /* needs to close connection */
       ee.printStackTrace();
       log("tprecv threw Exception: " + ee);
       throw new TPException(TPException.TPESYSTEM, "Exception: " + ee);
    }
    returnData2 = (TypedString)myRtn.getReplyBuffer();
    log("second receive successful!");
    doClose(myTux, ix);  /* needs to close connection even when everything is good */
    log("conversation successful");
    return returnData1.toString() + returnData2.toString();
  }
  private void doClose(Connection conn, Interaction ix) 
  {
    try {
      if (ix != null) {
        ix.close();
        ix = null;
      }
      if (conn != null) {
        conn.close();
        conn = null;
      }
    }
    catch (Exception e) {
      log("Exception occurred while closing connection! " + e.getMessage());
    }
  }
 /**
  * This method is required by the EJB Specification,
  * but is not used by this example.
  */
  public void ejbCreate() throws CreateException { }
  public void ejbPostCreate() throws CreateException { }
  private void log(String s) {
    if (VERBOSE) {
      System.out.println(s);
    } 
  }
}

Oracle Tuxedo JCA Adapter構成

dmconfigファイル

dmconfigファイルは、リスト57に示すように、構成ファイルがどこにあるかをTuxedo JCA Adapterに示すリソース・アダプタ・デプロイメント記述子のプロパティです。

リスト57 dmconfigファイル
<?xml version="1.0" encoding="UTF-8"?>
<TuxedoConnector>
  <LocalAccessPoint name="JDOM">
    <AccessPointId>JDOM_ID</AccessPointId>
    <NetworkAddress>//localhost:10801</NetworkAddress>
  </LocalAccessPoint>
  <RemoteAccessPoint name="TDOM">
    <AccessPointId>TDOM_ID</AccessPointId>
    <NetworkAddress>//localhost:12478</NetworkAddress>
  </RemoteAccessPoint>
  <SessionProfile name="profile_1">
    <BlockTime>60000</BlockTime>
    <ConnectionPolicy>ON_STARTUP</ConnectionPolicy>
  </SessionProfile>
  <Session name="session_1">
    <LocalAccessPointName>JDOM</LocalAccessPointName>
    <RemoteAccessPointName>TDOM</RemoteAccessPointName>
    <ProfileName>profile_1</ProfileName>
  </Session>
  <Import name="MYCONV">
    <RemoteName>MYCONV</RemoteName>
    <SessionName>session_1</SessionName>
    <LoadBalancing>RoundRobin</LoadBalancing>
  </Import>
</TuxedoConnector>

前述の構成例では、1つのローカル・アクセス・ポイント「JDOM」と、1つのリモート・アクセス・ポイント「TDOM」が構成されています。また「session_1」という名前の、JDOMTDOMの間の1つのOracle Tuxedo TDomainセッション、および「profile_1」という名前のsession_1プロファイルも構成されています。

Oracle Tuxedoのエクスポートされたサービス名「MYCONV」に対応して、「MYCONV」という名前で構成された1つのインポートされたリソースが存在します。

リソース・アダプタ・デプロイメント記述子

リスト58に、対応するリソース・アダプタ・デプロイメント記述子を示します。このファイルは「ra.xml」という名前で、Resource ArchiveファイルのMETA-INFにあります。

リスト58 リソース・アダプタ・デプロイメント記述子
<?xml version="1.0" encoding="UTF-8"?>
<connector xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"
    version="1.5">
  <display-name>Tuxedo JCA Adapter</display-name>
  <vendor-name>Oracle</vendor-name>
  <eis-type>Tuxedo</eis-type>
  <resourceadapter-version>12gR1(12.1.1.0.0)</resourceadapter-version>
  <license>
    <description>Tuxedo SALT license</description>
    <license-required>false</license-required>
  </license>
  <resourceadapter>
    <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoResourceAdapter</resourceadapter-class>
    <!--
    <resourceadapter-class>com.oracle.tuxedo.adapter.TuxedoFBCResourceAdapter</resourceadapter-class>
      The following is the list of properties name can be configured as adapter-wise configuration.
      traceLevel  - java.lang.String  - a numerical value
      xaAffinity  - java.lang.String  - transaction affinity to a remote domain, "true" or "false", default to true
      keyFileName - java.lang.String  - encryption key file name
      throwFailureReplyException - java.lang.Boolean - default to ture
      appManagedLocalTxTimeout   - java.lang.Integer - Application managed transaction or AUTOTRAN timeout
                                                       defaults to 300 seconds
      fieldTable16Class - java.lang.String - a comma-separated list of fully qualified FML classes
      fieldTable32class - java.lang.String - a comma-separated list of fully qualified FML32 classes
      viewFile16Class   - java.lang.String - a comma-separated list of fully qualified VIEW classes
      viewFile32Class   - java.lang.String - a comma-separated list of fully qualified VIEW32 classes
      tpusrFile         - java.lang.String - path name to the TPUSR file 
      remoteMBEncoding  - java.lang.String - remote Tuxedo encoding name for multi-byte language
      mBEncodingMapFile - java.lang.String - path name to Multi-byte encoding name mapping
      autoTran          - java.lang.Boolean- enable adapter-wise AUTOTRAN, default to false
    -->
    <config-property>
      <config-property-name>dmconfig</config-property-name>
      <config-property-type>java.lang.String</config-property-type>
      <config-property-value>C:\test\JCA\adapter\dmconfig.xml</config-property-value>
    </config-property>
    <config-property>
      <config-property-name>debugConfig</config-property-name>
      <config-property-type>java.lang.Boolean</config-property-type>
      <config-property-value>true</config-property-value>
    </config-property>
    <outbound-resourceadapter>
      <connection-definition>
        <managedconnectionfactory-class>com.oracle.tuxedo.adapter.spi.TuxedoManagedConnectionFactory</managedconnectionfactory-class>
        <!--
          The following is the list of properties that user can use them
          to configure connection pool or connection factory.
          User must either configure localAccessPointSpec or
          connectionFactoryName if transaction is used.
          These property described here is serving as template, user should not
          configure them here, instead user should configure them either through WebSphere console 
          or weblogic-ra.xml side file.
        -->
        <config-property>
          <description>factory-wise AUTOTRAN setting, default to false, overrides adapter-wise setting</description>
          <config-property-name>autoTran</config-property-name>
          <config-property-type>java.lang.Boolean</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise Failure Reply Exception setting, default to true, overrides adapter-wise setting</description>
          <config-property-name>throwFailureReplyException</config-property-name>
          <config-property-type>java.lang.Boolean</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise application managed transaction or AUTOTRAN time out, overrides adapter-wise setting</description>
          <config-property-name>appManagedLocalTxTimeout</config-property-name>
          <config-property-type>java.lang.Integer</config-property-type>
        </config-property>
        <config-property>
          <description>connection factory or pool name, this is required if XA or local application managed
                       transaction is required</description>
          <config-property-name>connectionFactoryName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>application password in either clear text or cipher text using com.oracle.tuxedo.tools.EncryptPassword tool</description>
          <config-property-name>applicationPassword</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>local access point specification of the format //hostname:port/domainId=DOMAINID</description>
          <config-property-name>localAccessPointSpec</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise SSL to configure whether mutual authentication is required, default to false</description>
          <config-property-name>mutualAuthenticationRequired</config-property-name>
          <config-property-type>java.lang.Boolean</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise SSL for configuring identity key store file name, must be configured if SSL is desired</description>
          <config-property-name>identityKeyStoreFileName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise SSL setting for private key alias used in the key store, must be configured if SSL is desired</description>
          <config-property-name>privateKeyAlias</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise trusted key store file name, must be configured if SSL is desired</description>
          <config-property-name>trustedKeyStoreFileName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise password for identityKeyStore in clear text</description>
          <config-property-name>identityKeyStorePassPhrase</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise password for privateKeyAlias in clear text</description>
          <config-property-name>privateKeyAliasPassPhrase</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise password for trustedKeyStore in clear text</description>
          <config-property-name>trustedKeyStorePassPhrase</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise RemoteAccessPoint specification of the format //hostname:port/domainId=DOMAINID</description>
          <config-property-name>remoteAccessPointSpec</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise allow anonymous access to Tuxedo, default to false</description>
          <config-property-name>rapAllowAnonymous</config-property-name>
          <config-property-type>java.lang.Boolean</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise application key value for anonymous user, default to -1</description>
          <config-property-name>rapDefaultApplicationKey</config-property-name>
          <config-property-type>java.lang.Integer</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise application key fully qualified class name for AppKey generator</description>
          <config-property-name>rapApplicationKeyClass</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise custom application key parameter</description>
          <config-property-name>rapApplicationKeyClassParam</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise session profile block timeout value, default to 60000 milliseconds</description>
          <config-property-name>spBlockTime</config-property-name>
          <config-property-type>java.lang.Integer</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise whether allows interoperate with 6.5 Tuxedo Domain, default to false</description>
          <config-property-name>spInteroperate</config-property-name>
          <config-property-type>java.lang.Boolean</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise security setting, legal values: NONE, DM_PW, APP_PW</description>
          <config-property-name>spSecurity</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise credential propagation policy, either LOCAL or GLOBAL</description>
          <config-property-name>spCredentialPolicy</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise number of seconds that session waits between automatic connection establishment,
                       default to 60 seconds. A value of 0 disabled connection retry</description>
          <config-property-name>spRetryInterval</config-property-name>
          <config-property-type>java.lang.Long</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise maximum number of times adapter will try to establish a session connection to
                       remote Tuxedo access point. Default value is Long.MAX_VALUE.</description>
          <config-property-name>spMaxRetries</config-property-name>
          <config-property-type>java.lang.Long</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise compression threshold, default to Integer.MAX_VALUE</description>
          <config-property-name>spCompressionLimit</config-property-name>
          <config-property-type>java.lang.Integer</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise minimum encryption strength requirement, legal values are 0, 40, 56, 128, 256.
                       Default value is 0.</description>
          <config-property-name>spMinEncryptBits</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise maximum encryption strength requirement, legal values are 0, 40, 56, 128, 256.
                       Default value is 128.</description>
          <config-property-name>spMaxEncryptBits</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise the maximum idle time before sending application level keep alive.
                       It is measured in millisecond, and roundup to seconds. Default value is 0.</description>
          <config-property-name>spKeepAlive</config-property-name>
          <config-property-type>java.lang.Long</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise how long adapter will wait for acknowledgement before adapter decides the
                       connection already lost.  Measurement in millisecond, and its default value is 10 seconds.
                       A value of 0 will disable the wait, and thus will not close the connection</description>
          <config-property-name>spKeepAliveWait</config-property-name>
          <config-property-type>java.lang.Long</config-property-type>
        </config-property>
        <config-property>
          <description>factory-wise valid Tuxedo service names in a comma-separated list.  If not specified then
                       default import will be used and will grant all service requests to remote Tuxedo domain</description>
          <config-property-name>impResourceName</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <config-property>
          <description>Exported resources.  Types of resource supported are</description>
          <config-property-name>exportSpec</config-property-name>
          <config-property-type>java.lang.String</config-property-type>
        </config-property>
        <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
        <connectionfactory-impl-class>com.oracle.tuxedo.adapter.cci.TuxedoConnectionFactory</connectionfactory-impl-class>
        <connection-interface>javax.resource.cci.Connection</connection-interface>
        <connection-impl-class>com.oracle.tuxedo.adapter.cci.TuxedoJCAConnection</connection-impl-class>
      </connection-definition>
<!--
      Other types of transaction support
      <transaction-support>NoTransaction</transaction-support>
      <transaction-support>LocalTransaction</transaction-support>
-->
      <transaction-support>XATransaction</transaction-support>
      <authentication-mechanism>
        <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
        <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
      </authentication-mechanism>
      <reauthentication-support>false</reauthentication-support>
    </outbound-resourceadapter>
  </resourceadapter>
</connector>
WebLogic Server固有のサイド・ファイル

WebLogic Serverで実行されるTuxedo JCA Adapterを使用するには、JNDI名に、固有の名前「weblogic-ra.xml」を持つファイルを構成する必要があります。このファイルは、リスト59に示すように、Resource ArchiveのMETA-INFに含まれている必要があります。

リスト59 WebLogic Server固有のサイド・ファイル
<?xml version="1.0"?>
<weblogic-connector
 xmlns="http://www.bea.com/ns/weblogic/90">
  <jndi-name>eis/TuxedoConnector</jndi-name>
  <enable-access-outside-app>true</enable-access-outside-app>
  <enable-global-access-to-classes>true</enable-global-access-to-classes>
  <outbound-resource-adapter>
    <connection-definition-group>
      <connection-factory-interface>javax.resource.cci.ConnectionFactory</connection-factory-interface>
      <connection-instance>
        <jndi-name>eis/TuxedoConnectionFactory</jndi-name>
      </connection-instance>
    </connection-definition-group>
  </outbound-resource-adapter>
</weblogic-connector>

 


JDeveloper SOA Suiteの使用

Tuxedo JCA Adapterには個別の.jarファイル形式で用意されたSOA構成ウィザードがあります。このウィザードはJDeveloper SOA拡張機能をサポートしています。このグラフィカルIDEを使用すると、Tuxedo JCA Adapterを介してOracle TuxedoでホストされるサービスをSOAアプリケーションで利用できます。Tuxedo JCA Adapterアイコンをドラッグ・アンド・ドロップしてOracle Tuxedoの「外部参照」を作成し、この構成ウィザードを使用してそのSOAの操作を構成することができます。

JATMIインタフェースにもCCIインタフェースにも変更はありませんが、JDeveloper SOA拡張機能ではJCA標準のCCIインタフェースのみを使用できます。Tuxedo JCA Adapterはインバウンド・サービス・リクエストをサポートしていますが、現時点でTuxedo JCA Adapter SOA構成ウィザードがサポートしているのはSOAのアウトバウンド操作のみです。

JDeveloper Studio IDE

Tuxedo JCA Adapter SOA構成ウィザードは、Tuxedo JCA Adapterを介してOracle Tuxedoアプリケーションを使用するビジネス・ロジックを設計する際に、開発環境としてJDeveloperとSOA拡張機能を併用する場合に使用できます。JDeveloperのSOA拡張機能をインストールする必要があります。

Tuxedo JCA AdapterのSOA構成ウィザードを使用すると、各構成ページをナビゲートできます。これらのページには、「ようこそ」ページ、「サービス名」ページ、JNDI接続ファクトリ・ページ、「操作」ページ、Tuxedo JCA Adapterプロパティ・ページなどがあります。Tuxedo JCA Adapterプロパティ・ページには、com.oracle.tuxedo.adapter.cci.TuxedoInteractionSpecのプロパティが含まれます。

Oracle Tuxedo JCA Adapter構成

コンポーネント名に「構成ウィザード」という名前が含まれていますが、このウィザードはJDeveloperでSOA拡張機能を構成し、Tuxedo JCA Adapterの起動方法をSOAに指示するためのものです。そのため、Tuxedo JCA Adapterの構成が必要になります。Tuxedo JCA AdapterがランタイムでSOAフレームワークを処理するように構成する場合、特別な構成は必要ありません。

既存のTuxedo JCA Adapterインストールは、構成に変更を加えなくても引き続き機能します。新規アプリケーションの場合は、3つの構成スタイルから1つを選択してTuxedo JCA Adapterを構成する必要があります。

SOA拡張機能の構成

リスト60に、SOA構成ファイル(soa-config.xml)に構成されるTuxedo JCA Adapterの新しいタイプを示します。

リスト60 soa-config.xml
<adapterType resourceBundle="com.oracle.tuxedo.adapter.designtime.resource.TuxedoJcaAdapterResourceBundle">
  <name>${TJA_ADAPTER_COMPONENT_NAME_L}</name>
   <bindingType>jca</bindingType>
    <bindingSubType> tuxedo</bindingSubType>
    <createType>referenceOnly</createType>
     <implementationClass>com.oracle.tuxedo.adapter.designtime.TjaScaEndpointImpl</implementationClass>
         <description>${TJA_ADAPTER_COMPONENT_DESC}</description>
         <tooltip>${TJA_ADAPTER_COMPONENT_DESC}</tooltip>
           <icon16x16>/com/oracle/tuxedo/adapter/designtime/resource/tja_adapter_16x16.png</icon16x16>     <icon20x20>/com/oracle/tuxedo/adapter/designtime/resource/tja_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>

前述の構成は実質的にダウンロードの一部として入手できるので、実際に変更する必要はありません。

SOA構成ファイルは$JDEVELOPER_HOME/integration/seed/soa/configurationディレクトリにあります。

Oracle Tuxedo JCA Adapter SOA構成ウィザードによるJDeveloperの起動

Oracle JDeveloper IDEを起動するには、JDeveloperアイコンをダブルクリックするか、$JDEVELOPER_HOME/jdev/bin/jdevを使用します。「コンポーネント」パレットのスライダを下にスクロールすると、Tuxedo JCA Adapterの「Oracle Tuxedo」アイコンが見つかります。図1は、SOA拡張機能によってTuxedo JCA Adapterが有効化されたJDeveloperのスクリーン・ショットを示しています。

図1 Tuxedo JCA Adapter SOAを使用した構成

Tuxedo JCA Adapter SOAを使用した構成

構成ウィザード

以降では、Oracle TuxedoサービスTOUPPERへの「外部参照」の構成手順を、順を追って説明します。この外部参照は実行時にSOAフレームワークによって起動され、Tuxedo JCA Adapterを介してOracle Tuxedoサービスにアクセスします。

Tuxedo JCA Adapterの外部参照の作成

「ようこそ」ページ

右側のパネルで「コンポーネント・パレット」を下にスクロールして「Tuxedo JCA Adapter」を見つけ、続いて、中央のウィンドウ・ペインにある「外部参照」領域に「Tuxedo JCA Adapter」アイコンをドラッグ・アンド・ドロップします。図2に示すように、Tuxedo JCA Adapter SOA構成ウィザードの「ようこそ」ページが表示されます。

図2 「ようこそ」ページ

「ようこそ」ページ

「サービス名」ページ

「ようこそ」ページの「次へ」ボタンをクリックすると、図3に示すように、「サービス名」ページが表示されます。入力するサービス名は、Oracle Tuxedoのエクスポートされたサービス名と同じ名前でも、SOAアプリケーションに適した任意の名前でもかまいません。この「サービス名」はSOA参照で使用されます。

図3 「サービス名」ページ

「サービス名」ページ

この例では、図4に示すように、「STRING_TOUPPER」と入力します。

図4 STRING_TOUPPER

STRING_TOUPPER

接続ファクトリの情報ページ

「サービス名」ページの「次へ」ボタンをクリックします。図5に示すように、接続ファクトリの情報ページが表示されます。接続ファクトリの情報ページでは、希望の接続ファクトリのJNDIを指定し、使用するTuxedo JCA Adapter接続ファクトリを指定します。

図5 接続ファクトリの情報ページ

接続ファクトリの情報ページ

使用する接続ファクトリのJNDI名を入力します。この例では、デフォルトのJNDI名「eis/TuxedoConnectionFactory」を使用します。

アダプタ・インタフェース・ページ

「次へ」ボタンをクリックします。図6に示すように、「アダプタ・インタフェース」ページが表示されます。アダプタ情報ページでは、WSDLを構成し、データ・バッファのXSDを指定します。

図6 アダプタ・インタフェース・ページ

アダプタ・インタフェース・ページ

ほとんどの場合、「後で指定する操作とスキーマから定義」ボタンを選択すれば十分ですが、既存のWSDLをインポートすることもできます。

「操作」ページ

「次へ」ボタンをクリックすると、図7に示すように、「操作」ページが表示されます。Tuxedo JCA Adapter SOA構成ウィザードではアウトバウンド操作のみがサポートされているため、値は「アウトバウンド」のままにします。

図7 「操作」ページ

「操作」ページ

Oracle Tuxedoインタラクション・プロパティ・ページ

「次へ」ボタンをクリックすると、図8に示すように、Oracle Tuxedoインタラクション・プロパティ・ページが表示されます。Tuxedo JCA Adapterでインポートされる実際のTuxedoサービス名を入力する必要があります。

図8 Oracle Tuxedoインタラクション・プロパティ・ページ

Oracle Tuxedoインタラクション・プロパティ・ページ

この例では、インポートされるTuxedoサービス名は「STR_TOUPPER」です。図9に示すように、Oracle Tuxedoサービスとして「STR_TOUPPER」と入力します。

図9 STR_TOUPPER

STR_TOUPPER

Tuxedoリクエスト・バッファ・プロパティ

「次へ」ボタンをクリックすると、図10に示すように、Oracle Tuxedoリクエスト・バッファ・プロパティ・ページが表示されます。ターゲットOracle TuxedoサービスのTuxedo JCA Adapterインタラクション・リクエストのバッファ・タイプを指定します。

Oracle Tuxedoバッファ・タイプが構造体バッファ・タイプのいずれか(FML/FML32/VIEW/VIEW32/X_C_TYPE/X_COMMONなど)である場合、フィールド表ファイルまたはVIEW表定義ファイルから生成されるJavaクラスから対応するものを指定する必要があります。これらのクラスはTuxedo JCA Adapterに付属のツールを使用して生成できます。これらのクラスは、そのバッファに対してユーザーが定義したXSDと一致している必要があります。

図10 Tuxedoリクエスト・バッファ・プロパティ

Tuxedoリクエスト・バッファ・プロパティ

この例では、図11に示すように、ドロップダウン・メニューから選択した「STRING」バッファ・タイプを使用します。

図11 STRINGバッファ・タイプ

STRINGバッファ・タイプ

Oracle Tuxedo応答バッファ・プロパティ・ページ

「次へ」ボタンをクリックすると、図12に示すように、Oracle Tuxedo応答バッファ・プロパティが表示されます。Oracle Tuxedoサービスから戻される可能性のあるTuxedo JCA Adapter Interaction応答バッファ・タイプをすべて選択します。

図12 Tuxedo応答バッファ・プロパティ・ページ

Tuxedo応答バッファ・プロパティ・ページ

この例では、図13に示すように、応答バッファ・タイプとして「STRING」を選択します。

図13 Stringバッファ

Stringバッファ

使用するスキーマに応じてXMLタグを入力します。

「メッセージ」ページ

「次へ」ボタンをクリックすると、図14に示すように、「メッセージ」ページが表示されます。「メッセージ」の構成は、対応するスキーマを構成する際に使用します。スキーマ・ファイルの場所を指定し、アウトバウンド・メッセージを定義するスキーマ要素を選択する必要があります。

「メッセージ」ページは、応答が必要かどうかによって異なる場合があります。

応答が必要な場合

図14は、応答が必要な場合の「メッセージ」構成ウィザード・ページを示しています。2つのスキーマ入力フィールドがある点に注意してください。1つは「インバウンド」というラベルのフィールドで、リクエスト・メッセージに必要なスキーマです。もう1つは「アウトバウンド」というラベルのフィールドで、応答メッセージに必要なスキーマです。

図14 メッセージ構成ページ

メッセージ構成ページ

検索アイコンをクリックすると、図15に示すように、スキーマ・ファイルがインポートされます。

図15 インポート・スキーマ・ファイル

インポート・スキーマ・ファイル

「OK」をクリックすると、図16に示すように、「ファイルのローカライズ」ページが表示されます。

図16 ファイルのローカライズ

ファイルのローカライズ

図17に示すように、Stringバッファの要素が強調表示されます。

図17 タイプ・チューザ

タイプ・チューザ

「OK」をクリックすると、図18に示すように、スキーマの「インバウンド」の部分が表示されます。

図18 インバウンド

インバウンド

アウトバウンド・リクエストに対しても同じようにすると、「メッセージ」ページは図19のようになります。

図19 アウトバウンド

アウトバウンド

応答が不要な場合

図20は、応答が不要な場合(Tuxedoインタラクション・プロパティ・ページでTPNOREPLYを選択した場合)の「メッセージ」構成ウィザード・ページを示しています。スキーマ入力フィールドは1つのみです。このフィールドはラベルのリクエスト・メッセージに必要な、メッセージ・スキーマというフィールドです。

図20 メッセージ・スキーマ

メッセージ・スキーマ

「終了」ページ

「次へ」ボタンをクリックすると、図21に示すように、「終了」ページが表示されます。

図21 「終了」ページ

「終了」ページ

「終了」ボタンをクリックすると、図22に示すように、Tuxedo JCA Adapter外部参照が作成されます。

図22 外部参照

外部参照

バッファ・タイプのXSD要件

FMLバッファ・タイプのXSD要件

Oracle Tuxedo FML表をweblogic.wtc.jatmi.mkfldclassコンパイラへの入力として使用してクラスを生成すると、対応するクラスが生成されます。リスト81に示すように、XSDではXMLがタグ名「FML」を含む要素で囲まれていることを示す必要があります。

リスト81 タグ名「FML」を含む要素で囲まれたXML
<ns:FML xmlns:ns="uri:my-namespace">
  <TEST_SHORT>1234</TEST_SHORT>
  <TEST_STRING>hello</TEST_STRING>
</ns:FML>

対応するFMLスキーマをリスト82に示します。

リスト82 FMLスキーマの出力
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="Uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="FML">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="TEST_SHORT" type="xsd:string"/>
        <xsd:element name="TEST_STRING" type="xsd:string"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
FML32バッファ・タイプのXSD要件

Tuxedo FML32表をweblogic.wtc.jatmi.mkfldclass32コンパイラへの入力として使用してクラスを生成すると、対応するクラスが生成されます。リスト83に示すように、XSDではそのXMLがタグ名「FML32」を含む要素で囲まれていることを示す必要があります。

リスト83 要素タグ「FML32」で囲まれたXML
<ns:FML32 xmlns:ns="uri:my-namespace">
  <TEST_SHORT>1234</TEST_SHORT>
  <TEST_STRING>hello</TEST_STRING>
</ns:FML32>

対応するFMLスキーマをリスト84に示します。

リスト84 FML32スキーマの出力
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="Uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="FML32">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="TEST_SHORT" type="xsd:string"/>
        <xsd:element name="TEST_STRING" type="xsd:string"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
VIEWバッファ・タイプのXSD要件

Oracle Tuxedo VIEW定義ファイルをweblogic.wtc.jatmi.viewjコンパイラへの入力として使用してクラスを生成すると、対応するクラスが生成されます。XSDではXMLが「VIEW」という名前の要素タグで囲まれていることを示す必要があります。バッファ・サブタイプは、VIEW定義ファイルで定義される名前です。また、リスト85に示すように、実際のペイロードを囲むXMLタグ名として使用する必要があります。

リスト85 要素タグ「VIEW」で囲まれたXML
<ns:VIEW xmlns:ns="uri:my-namespace">
  <MyView>
    <TEST_SHORT>1234</TEST_SHORT>
    <TEST_STRING>hello</TEST_STRING>
  </MyView>
</ns:VIEW>

「MyView」タグはVIEWバッファ・サブタイプです。

対応するVIEWスキーマをリスト86に示します。

リスト86 VIEWスキーマの出力
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="Uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="VIEW">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="View16">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="TEST_SHORT" type="xsd:string"/>
              <xsd:element name="TEST_STRING" type="xsd:short"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
VIEW32バッファ・タイプのXSD要件

Oracle Tuxedo VIEW32定義ファイルをweblogic.wtc.jatmi.viewj32コンパイラへの入力として使用してクラスを生成すると、対応するクラスが生成されます。XSDではXMLが「VIEW32」という名前の要素タグで囲まれていることを示す必要があります。バッファ・サブタイプは、VIEW定義ファイルで定義される名前です。また、リスト87に示すように、実際のペイロードを囲むXMLタグ名として使用する必要があります。

リスト87 タグ名「VIEW32」を含む要素で囲まれたXML
<ns:VIEW32 xmlns:ns="uri:my-namespace">
  <View32>
    <TEST_SHORT>1234</TEST_SHORT>
    <TEST_STRING>hello</TEST_STRING>
  </view32>
</ns:VIEW32>

「View32」タグはバッファ・サブタイプです。

対応するVIEW32スキーマをリスト88に示します。

リスト88 VIEW32スキーマの出力
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="Uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="VIEW32">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="View32">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="TEST_SHORT" type="xsd:string"/>
              <xsd:element name="TEST_STRING" type="xsd:short"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema
X_C_TYPEバッファ・タイプの要件

Oracle Tuxedo VIEW定義ファイルをweblogic.wtc.jatmi.viewjコンパイラへの入力として使用し、コマンドライン・オプション「-xctype」を指定してクラスを生成すると、対応するクラスが生成されます。XSDではXMLが「X_C_TYPE」という名前の要素タグで囲まれていることを示す必要があります。バッファ・サブタイプは、VIEW定義ファイルで定義される名前です。また、リスト89に示すように、実際のペイロードを囲むXMLタグ名として使用する必要があります。

リスト89 タグ名「X_C_TYPE」を含む要素で囲まれたXML
<ns:X_C_TYPE xmlns:ns="uri:my-namespace">
  <MyXCType>
    <TEST_SHORT>1234</TEST_SHORT>
    <TEST_STRING>hello</TEST_STRING>
  </MyXCType>
</ns:X_C_TYPE>

MyXCType」タグはバッファ・サブタイプです。

対応するX_C_TYPEスキーマをリスト88に示します。

リスト90 X_C_TYPEスキーマの出力
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="Uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="X_C_TYPE">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="MyXCType">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="TEST_SHORT" type="xsd:string"/>
              <xsd:element name="TEST_STRING" type="xsd:short"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
X_COMMONバッファ・タイプのXSD要件

Oracle Tuxedo VIEW定義ファイルをweblogic.wtc.jatmi.viewjコンパイラへの入力として使用し、コマンドライン・オプション「-xcommon」を指定してクラスを生成すると、対応するクラスが生成されます。XSDではXMLが「X_COMMON」という名前の要素タグで囲まれていることを示す必要があります。バッファ・サブタイプは、VIEW定義ファイルで定義される名前です。また、リスト91に示すように、実際のペイロードを囲むXMLタグ名として使用する必要があります。

リスト91 タグ名「X_COMMON」を含む要素で囲まれたXML
<ns:X_COMMON xmlns:ns="uri:my-namespace">
  <MyXCommon>
    <TEST_SHORT>1234</TEST_SHORT>
    <TEST_STRING>hello</TEST_STRING>
  </MyXCommon>
</ns:X_COMMON>

MyXCommon」タグはX_COMMONバッファ・サブタイプです。

対応するX_C_TYPEスキーマをリスト92に示します。

リスト92 X_C_TYPEスキーマの出力
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="Uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="X_COMMON">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="MyXCommon">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="TEST_SHORT" type="xsd:string"/>
              <xsd:element name="TEST_STRING" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
WSDLおよびインタラクション動詞の選択

SOAは一般的にWSDLに基づいているため、どの「動詞」を使用するかはWSDL操作シグネチャで決まります。WSDLに対応するSYNC_SEND_RECEIVEリスト92に示します。

リスト93 WSDLに対応するSYNC_SEND_RECEIVE
<operation name="ECHO">
  <input message:="tns:send_msg"/>
  <output message="tns:recv_msg"/>
</operation>

WSDLに対応するSYNC_SENDリスト94に示します。

リスト94 SYNC_SEND
<operation name="MYEVENT">
  <input message:="tns:write_msg"/>
</operation>

"SYNC_RECEIVE"はWSDL操作ではサポートされていません。

バッファ変換

SOAフレームワークはXMLレコードによって操作されるため、Oracle Tuxedoのブロック指向バッファ・タイプとXMLレコード間で変換が必要になります。Tuxedo JCA Adapterは、この項で説明するルールとユーザーが構成したメタデータに従って暗黙的にバッファ変換を実行します。クライアントまたはSOAフレームワークでコーディングする必要はありません。

入力データの変換

入力データとは、Tuxedo JCA AdapterがSOAフレームワークから受信するXMLレコードを意味し、サービス・リクエストとしてOracle Tuxedoに転送されます。表31に、SOAフレームワークからOracle Tuxedoに入力データを変換する場合のマトリックスを示します。

表31 入力バッファ・タイプの変換表
入力バッファ・タイプの変換表
入力されるSOAレコード・タイプ
構成されているTuxedoバッファ・タイプ
変換タイプ
XMLレコード
XML
変換なし
XMLレコード
FMLおよびFML32
タイプ1
XMLレコード
VIEWおよびVIEW32
タイプ2
XMLレコード
STRING
タイプ3
XMLレコード
CARRAY、X_OCTET
タイプ3
XMLレコード
X_C_TYPE、X_COMMON
タイプ2
XMLレコード
MBSTRING
タイプ3

Oracle Tuxedoサービスの入力バッファ・タイプを指定しなかった場合、入力されるXMLレコードがXMLバッファで変換された後で、Oracle Tuxedoにリクエストが転送されます。

Oracle Tuxedoサービスで複数のOracle Tuxedoバッファ・タイプをサポートし、対応するSOAコンポジット・アプリケーションで複数のタイプのOracle Tuxedoバッファを使用してリクエストを生成する可能性がある場合、構成ウィザードを使用して、同じサービスを複数回構成する必要があります。これにより、SOAフレームワークでOracle Tuxedoサービスを起動する際に複数のTuxedoInteractionSpecを使用できるようになります。

ターゲットOracle Tuxedoサービスで入力バッファ・タイプとしてFML/FML32が必要な場合、対応するFML/FML32クラスでリクエスト・クラスを構成する必要があります。この指定をしないと、構成ウィザードの次のページに進めません。実際に受け取った入力XMLレコードに、対応するFML/FML32のフィールド名が存在しないタグが含まれている場合、SOAフレームワークがTuxedo JCA Adapterを起動する際にResourceExceptionが送出されます。

注意: VIEW、VIEW32、X_C_TYPEおよびX_COMMONにも同じ要件が適用されます。

出力データの変換

出力データとは、Oracle Tuxedoサービスから戻される応答内のユーザー・データを意味します。この場合、Tuxedo JCA AdapterはOracle Tuxedoの型付きバッファに含まれるデータのみを受信できます。データはユーザーからの最小構成メタデータによってXMLレコードに変換されます。

Oracle Tuxedoサービスは、異なるOracle Tuxedo型付きバッファを使用してユーザー・データを戻す可能性があります。この場合、そのデータはTuxedo JCA Adapterによって暗黙的にXMLレコードに変換されるため、クライアント・コードを書く必要はありません。ただし、必要なメタデータを構成する責任があります。

表32に、Oracle TuxedoバッファからXMLレコードに出力データを変換する場合のマトリックスを示します。

表32 出力バッファ・タイプの変換表
出力バッファ・タイプの変換表
入力するTuxedoバッファ・タイプ
出力されるSOAレコード・タイプ
変換タイプ
XML
XMLレコード
変換なし
FMLおよびFML32
XMLレコード
タイプ1
VIEWおよびVIEW32
XMLレコード
タイプ2
STRING
XMLレコード
タイプ3
CARRAY_X_OCTET
XMLレコード
タイプ3
X_C_TYPEおよびX_COMMON
XMLレコード
タイプ2
MBSTRING
XMLレコード
タイプ3

応答バッファ・タイプが、VIEW、VIEW32、X_C_TYPE、X_COMMONのいずれかで、そのクラス名の対応するプロパティがTuxedoInteractionSpecで構成されていない場合は、ResourceException例外が送出されます。FML/FML32バッファ・タイプにも同じ要件が適用されます。

応答バッファ・タイプが、STRING、CARRAY、X_OCTET、MBSTRINGのいずれかで、適切なXMLタグが構成されていない場合は、ResourceException例外が送出されます。

変換タイプ

以降の項では、Tuxedo JCA Adapterによるバッファ・タイプ変換の仕組みについて説明します。

変換なし

「変換なし」は、Tuxedo JCA Adapterがダイレクト・マッピングを使用して応答バッファを戻す、あるいはリクエストを受け取ることを意味します。応答XMLバッファに整形式XML文書が含まれていない場合は、ResourceExceptionが送出されます。

タイプ1の変換

「タイプ1」の変換は、Tuxedo JCA AdapterがFLDIDを使用してFIELD NAMEを取得することを意味します。ALSB Tuxedoトランスポートによる処理と同様に、XML要素タグをリクエストと応答の両方で使用します。この場合、表33に示すように、FMLにはFMLのクラス名、FML32にはFML32のクラス名を構成する必要があります。

表33 XMLのルート要素タグ名
XMLのルート要素タグ名
Tuxedoのバッファ・タイプ
XMLのルート要素タグ
FML
<FML>
FML32
<FML32>

埋込みFML32は、Tuxedo JCA Adapterでもサポートされます。ただし、FML/FML32からXMLへの変換ではフィールド・タイプFLD_MBSTRINGはサポートされません。

リスト95に、FML32の表の例を示します。

リスト95 FML32の表の例
#name			number	type	flags	comments
TEST_SHORT	 108		short	-	-
TEST_STRING	 109		string	-	-

パッケージ名tuxedo.test.datarecord.FML32weblogic.wtc.jatmi.mkfldclass32への入力として前述のFML32表を使用すると、リスト96に示すように、Javaクラスが作成されます。

リスト96 Javaクラスの例
package tuxedo.test.datarecord.FML32;
import java.io.*;
import java.lang.*;
import java.util.*;
import weblogic.wtc.jatmi.*;
public final class fmltbl32
	implements weblogic.wtc.jatmi.FldTbl
{
  Hashtable nametofieldHashTable;
  Hashtable fieldtonameHashTable;
  /** number: 108  type: short */
  public final static int TEST_SHORT = 108;
  /** number: 109  type: string */
  public final static int TEST_STRING = 167772269;
  public String Fldid_to_name(int fldid)
  {
    if ( fieldtonameHashTable == null ) {
      fieldtonameHashTable = new Hashtable();
      fieldtonameHashTable.put(new Integer(TEST_SHORT), "TEST_SHORT");
      fieldtonameHashTable.put(new Integer(TEST_STRING), "TEST_STRING");
    }
    return ((String)fieldtonameHashTable.get(new Integer(fldid)));
  }
  public int name_to_Fldid(String name)
  {
    if ( nametofieldHashTable == null ) {
      nametofieldHashTable = new Hashtable();
      nametofieldHashTable.put("TEST_SHORT", new Integer(TEST_SHORT));
      nametofieldHashTable.put("TEST_STRING", new Integer(TEST_STRING));
    }
    Integer fld = (Integer)nametofieldHashTable.get(name);
    if (fld == null) {
      return (-1);
    } else {
      return (fld.intValue());
    }
  }
  public String[] getFldNames()
  {
    String retval[] = new String[2];
    retval[0] = new String("TEST_SHORT");
    retval[1] = new String("TEST_STRING");
    return retval;
  }
}

リスト97は、FML32バッファから変換された後の状態を示しています。

リスト97 FML32バッファから変換されたXML文書
<ns:FML32 xmlns:ns="uri:my-namespace">
  <TEST_SHORT>1234</TEST_SHORT>
  <TEST_STRING>hello</TEST_STRING>
</ns:FML32>

リスト98に、対応するスキーマを示します。

リスト98 対応するスキーマ
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="Uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="FML32">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="TEST_SHORT" type="xsd:string"/>
        <xsd:element name="TEST_STRING" type="xsd:string"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
注意: このスキーマは、埋込みのVIEW32およびFML32を含むFML32を示しています。
タイプ2の変換

リクエストまたは応答(あるいはその両方)のバッファ・タイプにVIEW、VIEW32、X_C_TYPEまたはX_COMMONを選択した場合、リスト34に示すように、Oracle Tuxedoバッファ・タイプに対応する完全修飾Javaクラスが必要になります。Javaクラス情報はテキスト入力フィールドで入力できます。

X_C_TYPEおよびX_COMMONはVIEWに似ているため、VIEWと同様に使用および作成できます。

完全修飾クラス・パスは、拡張されたTuxedoInteractionSpecの一部になります。

表34 XMLのルート要素タグ名
XMLのルート要素タグ名
Tuxedoのバッファ・タイプ
XMLのルート要素タグ
VIEW
<VIEW>
VIEW32
<VIEW32>
X_C_TYPE
<X_C_TYPE>
X_COMMON
<X_COMMON>

対応するスキーマ・ファイルでXMLラッピング要素をラップしたように、サブタイプと同じ名前の要素を指定する必要があります。たとえば、サブタイプ名が「myview32」の場合、対応するXML文書は、リスト99のようになります。

リスト99 myview32 XML文書
<VIEW32>
  <myview32>
  </myview32>
</VIEW32>

また、このVIEW32バッファ・タイプのXSDファイルは、リスト100に示すように定義できます。

リスト100 View32 XSDファイル
<xsd:element name="VIEW32">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="myview32">
        <xsd:complexType>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

ネストされたVIEWは、現在Tuxedo JCA Adapterでサポートされていません。

リスト101は、weblogic.wtc.jatmi.viewj32で使用できるVIEW定義ファイルを示しています。

リスト101 VIEW定義ファイル
VIEW View32
short  TEST_SHORT -  1  -  -  0
string TEST_STRING   -  1  -  100   -
END

リスト103に、viewj32コンパイラを使用して生成されたVIEW32クラス・ファイルを示します。

リスト102 viewj32コンパイラで生成されたVIEW32クラス・ファイル
package tuxedo.test.datarecord.VIEW32;
import java.io.*;
import java.lang.*;
import weblogic.wtc.jatmi.*;
import com.bea.core.jatmi.common.Utilities;
public class View32 extends TypedView32 implements Serializable {
  private short TEST_SHORT = 0;
  private String TEST_STRING = null;
  private boolean _associatedFieldHandling = false;
  public View32() {
    super("View32");
    return;
  }
  /**
   * Gets the current state of associated field handling.
   * @return the current state (true=on, false=off)
   */
  public boolean getAssociatedFieldHandling()
  {
    return _associatedFieldHandling;
  }
  /**
   * Sets the state of associated field handling.
   * @param state the desired state (true=on, false=off)
   */
  public void setAssociatedFieldHandling(boolean state)
  {
    _associatedFieldHandling = state;
  }
  /**
   * Gets the value of the TEST_SHORT element of this view
   * @return The value which this element has
   */
  public short getTEST_SHORT()
  {
    return(this.TEST_SHORT);
  }
  /**
   * Sets the value of the TEST_SHORT element of this view
   * @param value The value to set the element to
   */
  public void setTEST_SHORT(short value)
  {
    this.TEST_SHORT = value;
  }
  /**
   * Gets the value of the TEST_STRING element of this view
   * @return The value which this element has
   */
  public String getTEST_STRING()
  {
    return(this.TEST_STRING);
  }
  /**
   * Sets the value of the TEST_STRING element of this view
   * @param value The value to set the element to
   * @throws IllegalArgumentException if the value is too long
   */
  public void setTEST_STRING(String value)
  {
    if (value.length() > 100)
         throw new IllegalArgumentException("Data too large for TEST_STRING");
    this.TEST_STRING = value;
  }
  public void _tmpresend(DataOutputStream encoder)
    throws TPException, IOException {
    int lcv;
    try {
      encoder.writeInt(TEST_SHORT);
      Utilities.xdr_encode_string_length(encoder,TEST_STRING, 100);
    }
    catch (IOException ie) {
      System.out.println("Error encoding view buffer: " + ie);
    }
    return;
  }
  public void _tmpostrecv(DataInputStream decoder, int recv_size)
    throws TPException, IOException {
    int lcv;
    TEST_SHORT = (short)decoder.readInt();
    TEST_STRING = Utilities.xdr_decode_string(decoder, null);
    return;
  }
}

リスト103に、前述のVIEW32クラスを使用して生成された、対応するXML文書を示します。

リスト103 対応するVIEW332クラスXML文書
<ns:VIEW32 xmlns:ns="uri:my-namespace">
  <View32>
    <TEST_SHORT>1234</TEST_SHORT>
    <TEST_STRING>hello</TEST_STRING>
  </View32>
</ns:VIEW32>
注意: 「View32」タグはVIEWのサブタイプ(この場合、VIEW32という名前)を表すために挿入されています。

リスト104に、対応するスキーマを示します。

リスト104 対応するスキーマ
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="Uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="VIEW32">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="View32">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="TEST_SHORT" type="xsd:string"/>
              <xsd:element name="TEST_STRING" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
タイプ3の変換

「タイプ3」の変換は、STRING、CARRAY、MBSTRINGおよびX_OCTETのOracle Tuxedoバッファ・タイプで使用します。ラップされた操作を使用する必要があります。ラップされた操作では、XMLRecordの応答をラップするために使用するタグ名を指定する必要があります。

XMLRecordリクエスト・バッファのリクエストでは、レコードに複数の要素がある場合、実行時にResourceExceptionが送出されます。リクエストのXMLRecordが空の場合や要素に長さ0の文字列が含まれている場合は、Oracle Tuxedoバッファ・タイプに対応する長さ0の文字列を使用してリクエストが転送されます。

応答バッファがCARRAYで、「attachment」を指定した場合、CARRAYデータはXMLRecordへの添付になります。応答バッファがCARRAYで、ユーザーが「attachment」を指定していない場合、応答データはXML文書として扱われます。

例1:

MYSTRING」という名前のXML要素タグを使用した「wrapped」操作を選択した場合、応答は次のようにラップされます。

<MYSTRING>abc123</MYSTRING>

例2:

wrapped」操作を選択しなかった場合、Tuxedo JCA Adapterは応答をネイティブXML文書として扱い、これを使用してXMLRecordを作成します。データが整形式XML文書でない場合は、ResourceExceptionが送出されます。

埋込みFML32およびVIEW32を使用したFML32スキーマの例

リスト105に、FML32バッファ・タイプ用のXSDファイルを示します。このファイルには、TEST_FML32という名前の埋込みFML32フィールドと、TEST_VIEW32という名前の埋込みView32フィールドがあります。TEST_VIEW32 VIEW32フィールドにはサブタイプmyview32があります。

リスト105 埋込みFML32およびVIEW32を使用したFML32スキーマ
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
  targetNamespace="uri:my-namespace"
  xmlns="uri:my-namespace"
  elementFormDefault="unqualified"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <xsd:element name="FML32" type="MyBaseFML32Type"/>
 <xsd:complexType name="MyBaseFML32Type">
   <xsd:sequence>
    <xsd:element name="TEST_CHAR" minOccurs="0" type="xsd:byte" />
    <xsd:element name="TEST_STRING" minOccurs="0" type="xsd:string" />
    <xsd:element name="TEST_SHORT" minOccurs="0" type="xsd:short" />
    <xsd:element name="TEST_FML32" minOccurs="0" type="MyEmbeddedFML32Type" />
    <xsd:element name="TEST_VIEW32" minOccurs="0" type="MyEmbeddedView32Type" />
   </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="MyEmbeddedFML32Type">
   <xsd:sequence>
    <xsd:element name="TEST_STRING" minOccurs="0" type="xsd:string"/>
    <xsd:element name="TEST_SHORT" minOccurs="0" type="xsd:short"/>
   </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="MyEmbeddedView32Type">
   <xsd:sequence>
    <!--
         "myview32" is the VIEW32 class name, and subtype of VIEW32 buffer
         A VIEW32 def file must be created and use it to create table   
         The definition must corresponds to myviewType
         and a viewj32 must be used to generate the class
         the compiled java class must be put in the system classpath
     -->
    <xsd:element name="myview32" minOccurs="0" type="myviewType"/>
   </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="myviewType">
   <xsd:sequence>
    <xsd:element name="V_CHAR" minOccurs="0" type="xsd:byte"/>
    <xsd:element name="V_SHORT" minOccurs="0" type="xsd:short"/>
    <xsd:element name="V_STRING" minOccurs="0" type="xsd:string"/>
   </xsd:sequence>
 </xsd:complexType>
</xsd:schema>

 


関連項目


  先頭に戻る       前  次