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

前へ
前へ
 
次へ
次へ
 

3 OC4Jのデプロイおよび統合

この章では、Oracle Containers for J2EE(OC4J)のデプロイおよびOracleAS Adapter for PeopleSoftとの統合について説明します。

この章の項目は次のとおりです。


参照:

  • 『Oracle Application Server Adapter 概要』


アダプタとOC4Jの統合

OracleAS Adapter for PeopleSoftは、インストール時にOC4Jコンテナ内にデプロイされます。 すべてのクライアント・アプリケーションは、OC4J環境で実行されます。 J2CAのデプロイでは、共通クライアント・インタフェース(CCI)により、OC4Jクライアント・アプリケーションがリソース・アダプタと統合されます。


参照:

  • 『Oracle Application Server Adapter概要』のOracle Application Server AdapterとOC4Jの統合に関する項


アダプタのデプロイ

図3-1に、Oracle Application Serverへのコネクタのデプロイを示します。 実行時サービスの使用例では、EJB、サーブレットまたはJavaプログラム・クライアントがJ2CAリソース・アダプタに対してCCIコールを実行します。アダプタは、このコールをリクエストとして処理し、EISに送ります。EISのレスポンスはクライアントに送られます。

図3-1 Oracle Application Server AdapterのJ2CAアーキテクチャ

OracleAS AdapterのJCAアーキテクチャ
「図3-1 Oracle Application Server AdapterのJ2CAアーキテクチャ」の説明


参照:

『Oracle Application Server Adapter 概要』

アダプタ構成の更新

OracleAS Adapter for PeopleSoftのJ2CAデプロイ中に、OC4Jによりoc4j-ra.xmlというデプロイメント・ディスクリプタが生成され、OC4J_home¥j2ee¥home¥application-deployments¥default¥jca_app_adapterに配置されます。


注意:

インストールには、oc4j-ra.xmlというファイルが複数含まれています。 この項で説明するOC4Jデプロイメント・ディスクリプタは、前述のディレクトリにあります。

単一の管理コネクタ・ファクトリ・オブジェクトの作成

oc4j-ra.xml記述子は、リソース・アダプタに関するOC4J固有のデプロイ情報を提供します。 たとえば、Application Explorerにおけるデフォルトのjca_sample構成は、oc4j-ra.xmlファイルでは次のように表されます。

<?xml version="1.0"?><!DOCTYPE oc4j-connector-factories PUBLIC "-//Oracle//DTD
Oracle Connector 9.04//EN" "http://xmlns.oracle.com/ias/dtds/oc4j-connector-factories-9_04.dtd">
<oc4j-connector-factories>
           <connector-factory location="eis/OracleJCAAdapter/DefaultConnection" connector-name="IWAFJCA10">
                   <config-property name="IWayHome" value="../../adapters/application"/>
                   <config-property name="IWayConfig" value="jca_sample"/>
                <config-property name="IWayRepoURL" value=""/>
                <config-property name="IWayRepoUser" value=""/>
                <config-property name="IWayRepoPassword" value=""/>
                <config-property name="logLevel" value="debug"/>
        </connector-factory>
</oc4j-connector-factories>

次の表に、oc4j-ra.xmlファイルに定義されているパラメータを示します。

パラメータ名 説明
IWayHome OracleASにパッケージされたアプリケーション・アダプタの基本インストール・ディレクトリ。
IWayConfig Application Explorerで定義されているアダプタ構成名。 たとえば、OracleAS Adapter for PeopleSoftの場合は、Application Explorerでjca_sample構成が事前に構成されています。
IWayRepoURL データベースへの接続をオープンするときに使用するURL。 このURLが必要なのは、BSEリポジトリとしてOracleデータベースを使用する場合のみです。詳細は、「BSEシステム設定の構成」を参照してください。
IWayRepoUser データベースへの接続時に使用するユーザー名。 このユーザー名が必要なのは、BSEリポジトリとしてOracleデータベースを使用する場合のみです。詳細は、「BSEシステム設定の構成」を参照してください。
IWayRepoPassword パスワード。指定すると、構成が上書きされます。 このパスワードが必要なのは、BSEリポジトリとしてOracleデータベースを使用する場合のみです。詳細は、「BSEシステム設定の構成」を参照してください。
loglevel ManagedConnectionFactoryプロパティで設定されているレベルが上書きされます。 .

複数の管理コネクタ・ファクトリ・オブジェクトの作成

複数の管理コネクタ・ファクトリ・オブジェクトを設定するには、oc4j-ra.xmlファイルを編集して<connector-factory>ノードを追加する必要があります。 たとえば、Application Explorerにおけるデフォルトのjca_sample構成は、oc4j-ra.xmlファイルでは次のように表されます。

<?xml version="1.0"?><!DOCTYPE oc4j-connector-factories PUBLIC "-//Oracle//DTD
Oracle Connector 9.04//EN" "http://xmlns.oracle.com/ias/dtds/oc4j-connector-factories-9_04.dtd">
<oc4j-connector-factories>
           <connector-factory location="eis/OracleJCAAdapter/DefaultConnection" connector-name="IWAFJCA10">
                   <config-property name="IWayHome" value="../../adapters/application"/>
                   <config-property name="IWayConfig" value="jca_sample"/>
                <config-property name="IWayRepoURL" value=""/>
                <config-property name="IWayRepoUser" value=""/>
                <config-property name="IWayRepoPassword" value=""/>
                <config-property name="logLevel" value="debug"/>
        </connector-factory>
</oc4j-connector-factories>

複数の管理コネクタ・ファクトリ・オブジェクトを作成するには、ファイルに新規の<connector-factory>ノードを追加する必要があります。次に例を示します。

<?xml version="1.0"?><!DOCTYPE oc4j-connector-factories PUBLIC "-//Oracle//DTD
Oracle Connector 9.04//EN" "http://xmlns.oracle.com/ias/dtds/oc4j-connector-factories-9_04.dtd">
<oc4j-connector-factories>
   <connector-factory location="eis/OracleJCAAdapter/DefaultConnection1" connector-name="IWAFJCA10">
   <config-property name="IWayHome" value="../../adapters/application"/>
   <config-property name="IWayConfig" value="jca_sample"/>
   <config-property name="IWayRepoURL" value=""/>
   <config-property name="IWayRepoUser" value=""/>
   <config-property name="IWayRepoPassword" value=""/>
   <config-property name="logLevel" value="debug"/>
   </connector-factory>
<connector-factory location="eis/OracleJCAAdapter/DefaultConnection2" connector-name="IWAFJCA10">
                   <config-property name="IWayHome" value="../../adapters/application"/>
                   <config-property name="IWayConfig" value="jca_sample2"/>
                   <config-property name="IWayRepoURL" value=""/>
                   <config-property name="IWayRepoUser" value=""/>
                <config-property name="IWayRepoPassword" value=""/>
                   <config-property name="logLevel" value="debug"/>
           </connector-factory>
</oc4j-connector-factories>

CCI APIを使用してJavaアプリケーション・クライアントを記述する方法

次の例では、パッケージされたアプリケーション・アダプタでCCIを使用するためのコード構造を示します。 コード例は4つのステップにわかれています。

ステップ1. コネクション・ファクトリの取得

コネクション・ファクトリはJNDIルックアップにより取得されます。

InitialContext context = new InitialContext();
ConnectionFactory cf = (ConnectionFactory)context.lookup(iwayJndi)

ステップ2. アダプタ用接続の取得

IWAFConnectionSpecは、設計時または実行時のサービス・アダプタ接続を作成するために使用されるConnectionSpecの実装です。ConnectionSpecには7つのパラメータがあります。ログ・レベルを除き、これらのパラメータに基づいて接続プーリングが完全にサポートされ、設定されます。

パラメータ名 説明
adapterName パッケージされているアプリケーション・アダプタの名前。
config - アダプタ構成名。IWAEAdapterの場合は不要です。
language デフォルトはenです。
country デフォルトはusです。
userName ユーザー名。指定すると、構成が上書きされます。
password パスワード。指定すると、構成が上書きされます。
logLevel ManagedConnectionFactoryプロパティで設定されているレベルが上書きされます。

接続プールは、特定の接続先へのクライアント接続の集合です。 プールにより、指定したリモート・システムへの新規接続を自動的に作成するか、既存の接続を戻すことができます。 また、不要になった接続をプールに戻すためのメソッドも用意されています。

接続プールでは、使用されなくなった接続をチェックしてクローズし、システム・リソースを節約できます。 プールによる接続のチェック間隔と、接続がタイムアウトになるまでの時間は、コール側アプリケーションで構成できます。

プールは常に1つのユーザーIDおよびパスワードにバインドされます。これは、このプールから使用される全接続で、これらの資格証明が使用されることを意味します。 PeopleSoft接続は、常にPeopleSoftユーザーIDおよびPeopleSoftクライアント番号にバインドされます。

プール・サイズを1に設定してログオンすると、接続プールは作成されません(ユーザーIDが1つとプロセス・スレッドが1つです)。 プール・サイズを2以上に設定してログオンすると、サイズnのプールが作成されます。nは、指定した数値です。


注意:

現在、OracleAS Adapter J2CAでサポートされているのは、基本的なセキュリティ・マッピングのみです。DEBUGログ・レベルでは、マッピング動作の詳細情報が提供されます。 機能は次のとおりです。
  • ユーザー名とパスワードを設定せず、アプリケーション・サーバーからセキュリティが提供されていない場合にも、OracleAS Adapter J2CAではアダプタ構成のセキュリティ情報を受け渡して使用できます。

  • ユーザー名とパスワードを設定すると、これらの値でアダプタ構成が上書きされます。 OracleAS Adapter J2CAでは、この情報がアプリケーション・サーバーから提供されるセキュリティ情報と比較され、値が一致しない場合はログに記録されます。ただし、その場合も情報は受け渡すことができます。


ConnectionSpecでアダプタ名と構成のパラメータを指定すると、PeopleSoftとの相互作用を開始するようにiWAFConnectionSpecを設定できます。 次に例を示します。

iWAFConnectionSpec cs = new IWAFConnectionSpec();
          cs.setAdapterName(ADAPTER);
          cs.setConfig(TARGET);
          cs.setLogLevel(LOG_LEVEL);  // Adapter layer log level
          Connection c = cf.getConnection(cs);// where cf is the connection factory

このコード部分では、ADAPTERはデプロイするアダプタ(この場合はPeopleSoft)、TARGETはApplication Explorerで定義されているターゲットの名前を指します。詳細は、「完全なコード例」を参照してください。

ステップ3. 実行時用のInteractionSpecとの相互作用の作成

Interaction i = c.createInteraction();
          IWAFInteractionSpec is = new IWAFInteractionSpec();
          is.setFunctionName(IWAFInteractionSpec.PROCESS);

PROCESSおよびIWAEという2つのファンクションを設定できます。 PROCESSは実行時に使用されます。IWAEが使用されるのは、設計時にIAEAdapterを使用する場合です。

ステップ4. 入力レコードの作成と相互作用の実行

この例では、EISの起動を完了するために、PeopleSoftメッセージが参照されます。スキーマはApplication Explorerから提供されます。

この例では、標準的なJ2CA索引付きレコードを使用しています。

// Use JCA IndexRecord, named "input" for runtime processing.
                IndexedRecord rIn = cf.getRecordFactory().createIndexedRecord("input");
                rIn.add(msg_run);
          IndexedRecord rOut = (IndexedRecord)i.execute(is, rIn);
                System.out.println((String)rOut.get(0));

この例では、特殊なレコードがサポートされます。

//IWAFRecord rIn = new IWAFRecord("input");
                //rIn.setRootXML(msg_run);
                //IWAFRecord response = executeRunInteraction(c, rIn);
          //IWAFRecord rOut = (IWAFRecord)i.execute(is, rIn);
                //System.out.println(rOut.getRootXML());

msg_runは、Application Explorerで作成されたスキーマから生成されるインスタンスのXML文書です。たとえば、次に示すのはPeopleSoftリクエストXML文書のサンプルです。

<?xml version="1.0" encoding="UTF-8" ?>
<PS8>
  <component perform="browse">LOCATION</component>
  <key name="Setid">SHARE</key>
  <key name="Location">ALBERTA</key>
</PS8>

完全なコード例

次に完全なコード例を示します。

import javax.resource.cci.*;
import com.ibi.afjca.cci.*;
import com.ibi.afjca.spi.*;

/**
 * The purpose of this sample is to illustrate how to use the IWAF Universal
 * JCA connector.
 */
public class IWAFJCASimple {

        private static String  HOME        = "c:/iway/xfoc/components/iwafcont/dist";
        private static String  CONFIG    = "base";
        private static String  LOG_LEVEL = "FATAL";

        private static String ADAPTER = "PeopleSoft";
        private static String TARGET  = "PeopleSoft_connection";

        // Input Message
        private static String msg_run = "<PeopleSoft/>";

  public static void main(String[] args) throws Exception {

                // 1. Getting the Connection factory through JNDI lookup
                // ---------------------------------------------------------
          InitialContext context = new InitialContext();
          ConnectionFactory cf = (ConnectionFactory)context.lookup(iwayJndi)
          // 2. Getting a connection for a particular adapter target, in this case PeopleSoft
                // ---------------------------------------------------------
          IWAFConnectionSpec cs = new IWAFConnectionSpec();
          cs.setAdapterName(ADAPTER);
          cs.setConfig(TARGET);
          cs.setLogLevel(LOG_LEVEL);  // Adapter layer log level
          Connection c = cf.getConnection(cs);// where cf is the connection factory

          // 3. Create interaction with interactionSpec for RUNTIME
                // ---------------------------------------------------------
          Interaction i = c.createInteraction();
          IWAFInteractionSpec is = new IWAFInteractionSpec();
          is.setFunctionName("PROCESS");

          // 4. Create input Record and execute interaction
                // ---------------------------------------------------------

          // 4.1 Using JCA standard Indexed Record
                // Use JCA IndexRecord, named "input" for runtime processing.
                IndexedRecord rIn = cf.getRecordFactory().createIndexedRecord("input");
                rIn.add(msg_run);
          IndexedRecord rOut = (IndexedRecord)i.execute(is, rIn);
                System.out.println((String)rOut.get(0));

          // 4.2 Our own Record is supported here
                //IWAFRecord rIn = new IWAFRecord("input");
                //rIn.setRootXML(msg_run);
                //IWAFRecord response = executeRunInteraction(c, rIn);
          //IWAFRecord rOut = (IWAFRecord)i.execute(is, rIn);
                //System.out.println(rOut.getRootXML());

  } // main()

}