OracleAS Adapters for CICSをデプロイし、Oracle Application Server Containers for J2EE(OC4J)と統合するには、J2CA 1.5 CICSアダプタを構成する必要があります。
この項の構成は、次のとおりです。
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アダプタは、リソース・アダプタ(RA)としてOC4Jコンテナ内にデプロイされます。
OC4Jクライアント・アプリケーションとリソース・アダプタとの規約は、Common Client Interface(CCI)によって定義されます。OC4Jコンテナとリソース・アダプタとの規約は、サービス・プロバイダ・インタフェース(SPI)によって定義されます。SPI APIは、接続管理、トランザクション管理およびセキュリティ管理を取り扱います。
接続管理により、アプリケーション・コンポーネントは、EISに接続し、アプリケーション・サーバーが提供する接続プーリングを利用できるようになります。
トランザクション管理により、アプリケーション・サーバーは、トランザクション・マネージャを使用して複数のリソース・マネージャ全体のトランザクションを管理できるようになります。
ライフサイクルの管理規約により、アプリケーション・サーバーは、アダプタのデプロイ時またはアプリケーション・サーバーの起動時にリソース・アダプタ・インスタンスを初期化できます。さらに、サーバーの停止時またはアダプタのアンデプロイ時には、そのことをアプリケーション・サーバーからリソース・アダプタ・インスタンスに通知できます。
ライフサイクル規約により、アプリケーション・サーバーがリソース・アダプタ・インスタンスのライフサイクルを管理するメカニズムが提供されます。
作業管理規約により、リソース・アダプタは、自らスレッドを作成するかわりに、アプリケーション・サーバーがディスパッチしたスレッドを使用してロジックを実行できます。ハンドシェイクはWork
インスタンスの発行を介して実行されます。これにより、実行コンテキスト(セキュリティおよびトランザクションなど)がより制御され、アプリケーション・サーバーのスレッド管理が効率的になります。
メッセージのインフロー規約により、メッセージのスタイル、セマンティックまたは送信インフラストラクチャにかかわらず、リソース・アダプタがアプリケーション・サーバーのメッセージ・エンドポイントに非同期メッセージを送信できます。これにより、リソース・アダプタを介してアプリケーション・サーバーに様々なメッセージ・プロバイダ(Java Message Service(JMS)またはJava API for XML(JAXM)など)をプラグインできます。
この項の構成は、次のとおりです。
Oracle Application Server下のJ2CA 1.5 CICSアダプタに接続するには、コネクション・ファクトリの関連パラメータを設定する必要があります。このタスクを実行するには、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 Studioを使用してOracle Connectサーバーで定義します。 |
|
必須。Oracle Connectデーモンが動作しているTCP/IPアドレスまたはホスト名を設定します。 |
|
オプション。使用するOracle Connectサーバー・ワークスペースの名前を指定します。デフォルトのワークスペースは |
|
オプション。サーバー上でOracle Connectデーモンが動作しているTCP/IPポートを指定します。デフォルトのポートは |
|
オプション。Oracle Connectサーバーにアクセスできるユーザーを指定します。Oracle Connectデーモンの構成で定義されたユーザーです。 関連項目: Oracle Connectサーバーへのアクセスを許可するユーザーの詳細は、デーモンの「セキュリティ」およびワークスペースの「セキュリティ」を参照してください。 |
|
オプション。ユーザーの有効なパスワードを指定します。 |
|
オプション。 |
|
オプション。 |
|
オプション。使用するファイアウォール・プロトコルを指定します。 |
|
オプション。接続のタイムアウト(秒単位)を指定します。デフォルトは0(ゼロ)です。これは、接続がタイムアウトしないことを意味します。 |
|
オプション。使用する暗号化プロトコルの名前を指定します。デフォルトは |
|
オプション。使用する対称暗号鍵の名前を指定します。 |
|
オプション。使用する対称暗号鍵の値を指定します。 |
|
オプション。対応するCICSアダプタの |
|
オプション。 |
|
オプション。XMLがネットワーク上で渡される方法を指定します。 |
|
オプション。 |
各J2CA 1.5 CICSアダプタには、「アウトバウンド用のJ2CA 1.5 CICSアダプタの構成」に説明されているように、oc4j-ra.xml
ファイルにエントリが必要です。
関連項目: 『Oracle Application Server Adapter概要』 |
リソース・アダプタの構成設定を変更するには、oc4j-ra.xml
ファイルで関連するconnector-factory
エントリを編集します。変更内容を有効にするには、Oracle Application Serverを停止して、再起動する必要があります。
Common Client Interface(CCI)APIを使用して、アダプタ相互作用を実行するアプリケーションを開発できます。
J2CA 1.5 CICSアダプタでCCI APIを使用する手順は、次のとおりです。
J2CA 1.5 CICSアダプタのConnectionFactory
オブジェクトを選択します。
選択したConnectionFactory
を使用してConnection
オブジェクトを作成します。Connection
は、EISへの基礎となるネットワーク接続に対するハンドルです。serverName
プロパティを使用してoc4j-ra-xml
ファイルで識別されます。
選択したConnectionFactory
を使用してConnection
オブジェクトを作成します。AttuInteractionSpec
オブジェクトを使用して相互作用プロパティを指定します。AttuInteractionSpec
オブジェクトの書式は次のとおりです。
AttuInteractionSpec(java.lang.String name, int verb, int timeOut)
次の表に、指定できるプロパティを示します。
表3-2 相互作用仕様プロパティ
プロパティ | 説明 |
---|---|
|
実行する相互作用名を指定します。 |
|
相互作用のモード( |
|
指定された相互作用の実行に対して、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-value>YTEST</activation-config- property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>portNumber</activation-config- property-name> <activation-config-property-value>4820</activation-config- property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>useNamespace</activation-config- property-name> <activation-config-property-value>true</activation-config- property-value> </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>true</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>10</activation-config- property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>eisName</activation-config- property-name> <activation-config-property-value>QVREAD</activation-config- property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>serverName</activation-config- property-name> <activation-config-property-value>mvs5</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> Required </trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>
次の表に、インバウンド相互作用に関連のあるプロパティを示します。
表3-4 インバウンド相互作用のOC4J接続プロパティ
プロパティ | 説明 |
---|---|
|
必須。使用するアダプタの名前を設定します。アダプタはOracle Studioを使用してOracle Connectサーバーで定義します。 |
|
必須。Oracle Connectデーモンが動作しているTCP/IPアドレスまたはホスト名を設定します。 |
|
オプション。エンドポイントにバッチで移動できるメッセージの最大数を指定します。デフォルトは1です。 |
|
オプション。2PCトランザクション・サポートを可能にします。デフォルトは |
|
オプション。空のトランザクションを維持し、CICSアダプタが「no messages」レスポンスを返す(これによって現行のトランザクションが閉じられる)までの最大時間を秒単位で定義します。デフォルトは30秒です。 |
|
オプション。問題の検出後、インバウンド・アクティビティを再開するまでのスリープ時間を定義します。デフォルトは15秒です。 |
|
オプション。使用するOracle Connectサーバー・ワークスペースの名前を指定します。デフォルトのワークスペースは |
|
オプション。サーバー上でOracle Connectデーモンが動作しているTCP/IPポートを指定します。デフォルトのポートは |
|
オプション。Oracle Connectサーバーにアクセスできるユーザーを指定します。Oracle Connectデーモンの構成で定義されたユーザーです。 関連項目: Oracle Connectサーバーへのアクセスを許可するユーザーの詳細は、デーモンの「セキュリティ」およびワークスペースの「セキュリティ」を参照してください。 |
|
オプション。ユーザーの有効なパスワードを指定します。 |
|
オプション。使用するファイアウォール・プロトコルを指定します。 |
|
オプション。接続のタイムアウト(秒単位)を指定します。デフォルトは0(ゼロ)です。これは、接続がタイムアウトしないことを意味します。 |
|
オプション。使用する暗号化プロトコルの名前を指定します。デフォルトは |
|
オプション。使用する対称暗号鍵の名前を指定します。 |
|
オプション。使用する対称暗号鍵の値を指定します。 |
|
オプション。 |
|
オプション。XMLがネットワーク上で渡される方法を指定します。 |
|
オプション。 |
エンドポイントはonMessage
メソッドを実装する必要があります。次の例に示すように、onMessageメソッドが受信するレコードはCoreDomRecord
クラスです。
例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; }
アダプタは戻り値を無視します。
CICS 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>