OracleAS Adapter for Tuxedoをデプロイし、Oracle Application Server Containers for J2EE(OC4J)と統合するには、J2CA 1.5 Tuxedoアダプタを構成する必要があります。
この項の構成は、次のとおりです。
Oracle Application Serverは、標準Java Development Kit(JDK)のJava仮想マシン(JVM)で動作する完全なJava 2 Enterprise Edition(J2EE)環境を提供します。OC4Jは、J2EEに認定されており、J2EE固有のコンテナ、APIおよびサービスをすべて提供します。 OC4JはJ2CA 1.5標準をサポートしています。
J2CAは、EISとのアプリケーションの統合を単純化する標準Javaインタフェースを定義します。 OracleASアダプタは、リソース・アダプタとしてOC4Jコンテナ内にデプロイされます。
OC4Jクライアント・アプリケーションとリソース・アダプタとの規約は、Common Client Interface(CCI)によって定義されます。OC4Jコンテナとリソース・アダプタとの規約は、サービス・プロバイダ・インタフェース(SPI)によって定義されます。SPI APIは、接続管理、トランザクション管理およびセキュリティ管理を取り扱います。
接続管理により、アプリケーション・コンポーネントは、EISに接続し、アプリケーション・サーバーが提供する接続プーリングを利用できるようになります。
トランザクション管理により、アプリケーション・サーバーは、トランザクション・マネージャを使用して複数のリソース・マネージャ全体のトランザクションを管理できるようになります。
ライフサイクル管理規約により、アプリケーション・サーバーは、アダプタのデプロイ中またはアプリケーション・サーバーの起動中にリソース・アダプタ・インスタンスを初期化できます。 また、アプリケーション・サーバーは、サーバーの停止中またはアダプタのアンデプロイ中にリソース・アダプタ・インスタンスに通知できます。
ライフサイクル規約により、アプリケーション・サーバーがリソース・アダプタ・インスタンスのライフサイクルを管理するメカニズムが提供されます。
作業管理規約により、リソース・アダプタが自らスレッドを作成するかわりに、アプリケーション・サーバーによってディスパッチされたスレッドを使用して、ロジックを実行できます。 Workインスタンスの発行によってハンドシェイクが実行されます。 これにより、アプリケーション・サーバーのスレッド管理が効率的になり、セキュリティやトランザクションなどの実行コンテキストをよりよく制御できるようになります。
EISからアプリケーション・サーバーへのインバウンド通信であるメッセージ・インフロー(「インバウンド用J2CA 1.5 Tuxedo Queueアダプタの構成」を参照)。
この項の構成は、次のとおりです。
Oracle Application Server管理のJ2CA 1.5 Tuxedoアダプタに接続するには、コネクション・ファクトリで関連するパレメータを設定する必要があります。 このタスクを実行するには、Oracle Enterprise Managerを使用するか、次の手順に従います。
エディタで次のファイルを開きます。
root\j2ee\home\application-deployment\default\oracle\oc4j-ra.xml
rootは、Oracle Application Serverのルート・ディレクトリを示します。
このファイルで、各接続に対して次のパラメータを設定します。
<oc4j-connector-factories>
<connector-factory location=" " connector-name="Oracle Legacy Adapter">
<config-property name="userName" value=" "/>
<config-property name="password" value=" "/>
<config-property name="eisName" value=" "/>
<config-property name="serverName" value=" "/>
<config-property name="workspace" value=" "/>
<config-property name="portNumber" value=" "/>
<config-property name="persistentConnection" value=" "/>
<config-property name="keepAlive" value=" "/>
<config-property name="firewallProtocol" value=""/>
<config-property name="connectTimeout" value=""/>
<config-property name="encryptionProtocol" value=""/>
<config-property name="encryptionKeyName" value=""/>
<config-property name="encryptionKeyValue" value=""/>
<config-property name="fakeXA" value=" "/>
<config-property name="useNamespace" value=" "/>
<config-property name="networkXMLProtocol" value=" "/>
<config-property name="exposeEventStreamMetadata" value=" "/>
</connector-factory>
</oc4j-connector-factories>
|
注意: locationは、Oracle Application Serverがアプリケーション・コンポーネントのコネクション・ファクトリ・インスタンスをバインドするJNDIロケーションを指定する属性です。 |
表3-1は、これらのパラメータの詳細な説明を示しています。
表3-1 アウトバウンド相互作用に関するOC4J接続のプロパティ
| プロパティ | 説明 |
|---|---|
|
|
必須。Oracle Application Serverがアプリケーション・コンポーネントのコネクション・ファクトリ・インスタンスをバインドするJNDIロケーションを指定します。 |
|
|
必須。使用するアダプタの名前を設定します。 アダプタは、「Oracle Connectアダプタの構成」に説明されているように、Oracle Studioを使用してOracle Connectサーバーで定義されます。 |
|
|
オプション。Oracle Connectデーモンが動作しているTCP/IPアドレスまたはホスト名を設定します。 関連項目: デーモンの詳細は、付録C「デーモンの高度なチューニング」を参照してください。 |
|
|
オプション。使用するOracle Connectサーバー・ワークスペースの名前を指定します。 デフォルトのワークスペースは |
|
|
オプション。サーバー上でOracle Connectデーモンが動作しているTCP/IPポートを指定します。 デフォルトのポートは |
|
|
オプション。Oracle Connectサーバーにアクセスできるユーザーを指定します。Oracle Connectデーモンの構成で定義されたユーザーです。関連項目: Oracle Connectサーバーへのアクセスを許可するユーザーの詳細は、「デーモン・セキュリティ」および「ワークスペース・セキュリティ」を参照してください。 |
|
|
オプション。ユーザーの有効なパスワードを指定します。 |
|
|
オプション。 |
|
|
オプション。 |
|
|
オプション。 使用するファイアウォール・プロトコルを指定します。 |
|
|
オプション。接続のタイムアウト(秒単位)を指定します。 デフォルトは0(ゼロ)です。これは、接続がタイムアウトしないことを示します。 |
|
|
オプション。使用する暗号化プロトコルの名前を指定します。 デフォルトは |
|
|
オプション。使用する対称暗号鍵の名前を指定します。 |
|
|
オプション。使用する対称暗号鍵の値を指定します。 |
|
|
オプション。 |
|
|
オプション。 |
|
|
オプション。 ネットワーク上でXMLが渡される方法を指定します。 |
|
|
オプション。 |
各J2CA 1.5 Tuxedoアダプタには、「アウトバウンド用J2CA 1.5 Tuxedoアダプタの構成」に説明されているように、oc4j-ra.xmlファイルにエントリが必要です。
リソース・アダプタの構成設定を変更するには、oc4j-ra.xmlファイルで関連するconnector-factoryエントリを編集します。変更内容を有効にするには、Oracle Application Serverを停止して、再起動する必要があります。
Common Client Interface(CCI)APIを使用して、アダプタ相互作用を実行するアプリケーションを開発できます。
J2CA 1.5 TuxedoアダプタでCCI APIを使用する手順は、次のとおりです。
J2CA 1.5 TuxedoアダプタのConnectionFactoryオブジェクトを選択します。
選択したConnectionFactoryを使用してConnectionオブジェクトを作成します。Connectionは、EISへの基礎となるネットワーク接続に対するハンドルです。serverNameプロパティを使用してoc4j-ra.xmlファイルで識別されます。
選択したConnectionFactoryを使用してConnectionオブジェクトを作成します。AttuInteractionSpecオブジェクトを使用して相互作用プロパティを指定します。 AttuInteractionSpecオブジェクトの書式は、次のとおりです。
AttuInteractionSpec(java.lang.String name, int verb, int timeOut)
次の表に、指定できるプロパティを示します。
表3-2 interactionSpecプロパティ
| プロパティ | 説明 |
|---|---|
|
|
実行する相互作用名を指定します。 |
|
|
相互作用のモード( |
|
|
指定された相互作用の実行に対して、EISが待機する時間(ミリ秒単位)を指定します。 |
次に、InteractionSpecのサンプルを示します。
AttuInteractionSpec iSpeq = new AttuInteractionSpec("query", javax.resource.cci.InteractionSpec.SYNC_RECEIVE, 60);javax.resource.cci.RecordFactory rf = new AttuRecordFactory(con, mcf.getLogger());
javax.resource.cci.MappedRecord queryRecord = rf.createMappedRecord("query"), queryRecord.put("##text", "select * from disam:nation"); javax.resource.cci.Record oRec = interaction.execute(iSpec, queryRecord);
interactionでexecuteメソッドを起動し、EISへのコールを開始します。相互作用に対するデータは、入出力レコードとして渡します。
相互作用による処理の終了後、InteractionおよびConnectionオブジェクトを閉じます。
この項の構成は、次のとおりです。
エンドポイントのプロバイダは、ejb-jar.xmlというエンドポイント・デプロイメント・ディスクリプタ・ファイルで、次の情報を提供する必要があります。
CICS QueueアダプタのActivationSpecクラスのプロパティ
エンドポイントに実装されたメッセージ・リスナーのタイプ
orion-ejb.xmlファイルに、リソース・アダプタの名前を含める必要があります。
OC4Jは、メッセージ・リスナーのタイプに対してリソース・アダプタのデプロイメント・ディスクリプタを検索し、各ActivationSpecクラスのエンドポイント・デプロイメント・ディスクリプタで定義されたプロパティを設定します。
リソース・アダプタは、メッセージ・リスナーのタイプとActivationSpecクラスを次のようにサポートしています。
表3-3 メッセージ・リスナーのタイプとActivationSpecクラス
| メッセージ・リスナーのタイプ | ActivationSpecクラス |
|---|---|
|
|
|
|
|
|
例3-1 エンドポイント・デプロイメント・ディスクリプタ(ejb-jar.xml)
<ejb-jar> <display-name>AttuMDB1</display-name> <enterprise-beans> <message-driven> <display-name>Attu Test Receiver Bean</display-name> <ejb-name>AttuTestReceiverBean</ejb-name> <ejb-class>attutestreceiverbean.AttuTestReceiverBean</ejb-class> <messaging-type>javax.resource.cci.MessageListener</messaging-type> <transaction-type>Container</transaction-type> <activation-config> <activation-config-property> <activation-config-property-name>userName</activation-config- property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>password</activation-config- property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>firewallProtocol< /activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>connectTimeout</activation- config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>encryptionProtocol </activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>encryptionKeyName </activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>encryptionKeyValue </activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>workspace </activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>portNumber </activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>useNamespace </activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>networkXMLProtocol </activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>idleTimeout </activation-config-property-name> </activation-config-property> <activation-config-property> <activation-config-property-name>messagesInBatch </activation-config-property-name> <activation-config-property-value>1</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>support2PC </activation-config-property-name> <activation-config-property-value>false</activation-config- property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>waitTime </activation-config-property-name> <activation-config-property-value>5</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>retryInterval </activation-config-property-name> <activation-config-property-value>5 </activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>eisName </activation-config-property-name> <activation-config-property-value>TUXGetEvents </activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>serverName </activation-config-property-name> <activation-config-property-value>drorr-xp </activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>exposeEventStreamMetadata </activation-config-property-name> <activation-config-property-value>true </activation-config-property-value> </activation-config-property> </activation-config> </message-driven> </enterprise-beans> <assembly-descriptor> <!-- NotSupported, Supports, Required, RequiresNew, Mandatory or Never --> <container-transaction> <method> <ejb-name> AttuTestReceiverBean </ejb-name> <method-name> onMessage </method-name> <method-params> <method-param> javax.resource.cci.Record </method-param> </method-params> </method> <trans-attribute> NotSupported </trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>
次の表に、インバウンド相互作用に関連するプロパティを示します。
表3-4 インバウンド相互作用に関するOC4J接続のプロパティ
| プロパティ | 説明 |
|---|---|
|
|
必須。Oracle Application Serverがアプリケーション・コンポーネントのコネクション・ファクトリ・インスタンスをバインドするJNDIロケーションを指定します。 |
|
|
必須。使用するアダプタの名前を設定します。 アダプタは、「Oracle Connectアダプタの構成」に説明されているように、Oracle Studioを使用してOracle Connectサーバーで定義されます。 |
|
|
バッチでエンドポイントに移動できるメッセージの最大数を指定します。 デフォルトは1に設定されます。 |
|
|
使用できる場合、グローバル・トランザクション・サポートを有効にします。 デフォルトは |
|
|
空のトランザクション期間と、Tuxedoアダプタがメッセージなしのレスポンス(これにより現行のトランザクションがクローズします)を戻す最大時間(秒)を定義します。 デフォルトは30秒に設定されます。 |
|
|
問題が検出されてからインバウンド・アクティビティが再開するまでのスリーピング・タイムを定義します。 デフォルトは15秒に設定されます。 |
|
|
オプション。Oracle Connectデーモンが動作しているTCP/IPアドレスまたはホスト名を設定します。 関連項目: デーモンの詳細は、付録C「デーモンの高度なチューニング」を参照してください。 |
|
|
オプション。使用するOracle Connectサーバー・ワークスペースの名前を指定します。 デフォルトのワークスペースは |
|
|
オプション。サーバー上でOracle Connectデーモンが動作しているTCP/IPポートを指定します。 デフォルトのポートは |
|
|
オプション。Oracle Connectサーバーにアクセスできるユーザーを指定します。Oracle Connectデーモンの構成で定義されたユーザーです。関連項目: Oracle Connectサーバーへのアクセスを許可するユーザーの詳細は、「デーモン・セキュリティ」および「ワークスペース・セキュリティ」を参照してください。 |
|
|
オプション。ユーザーの有効なパスワードを指定します。 |
|
|
オプション。 使用するファイアウォール・プロトコルを指定します。 |
|
|
オプション。接続のタイムアウト(秒単位)を指定します。 デフォルトは0(ゼロ)です。これは、接続がタイムアウトしないことを示します。 |
|
|
オプション。使用する暗号化プロトコルの名前を指定します。 デフォルトは |
|
|
オプション。使用する対称暗号鍵の名前を指定します。 |
|
|
オプション。使用する対称暗号鍵の値を指定します。 |
|
|
オプション。 |
|
|
オプション。 ネットワーク上でXMLが渡される方法を指定します。 |
|
|
|
エンドポイントでは、onMessageメソッドを使用します。 次のサンプルに、CoreDomRecordクラスからDOMを受け取る方法を示します。
例3-2 onMessageメソッド
public Record onMessage(Record inMessage)throws javax.resource.ResourceException {
…
CoreDOMWriter domW;
domW = new CoreDOMWriter(false);
Element outEl = ((CoreDomRecord)inMessage).getDom();
String xml = domW.toXMLString(outEl);
…
return null;
}
アダプタは戻り値を無視します。
Tuxedo Queueアダプタにemployeeおよびdepartmentの2つのタイプのメッセージが記述されている場合、XMLデータに、次の入力レコード構造を含める必要があります。
exposeEventStreamMetadataプロパティがtrueに設定されている場合:
<eventStream>
< EMPLOYEE>
...
</ EMPLOYEE>
<DEPARTMENT>
...
</DEPARTMENT>
</eventStream>
exposeEventStreamMetadataプロパティがfalseに設定されている場合:
<getEventsResponse xmlns="noNamespace://QVREAD">
<event eventName="EMPLOYEE" timestamp="2005-08-23T15:23:18">
< EMPLOYEE>
...
</ EMPLOYEE>
</event>
<event eventName=" DEPARTMENT " timestamp="2005-08-23T15:23:18">
<DEPARTMENT>
...
</DEPARTMENT>
</event>
</getEventsResponse>