| Oracle Application Server Adapter for J.D. Edwards OneWorldユーザーズ・ガイド 10g リリース3(10.1.3.4.0) B53280-01 |
|
![]() 戻る |
![]() 次へ |
この章では、Oracle Containers for J2EE(OC4J)のデプロイおよびOracleAS Adapter for J.D. Edwards OneWorldとの統合について説明します。
この章の項目は次のとおりです。
|
関連項目:
|
OracleAS Adapter for J.D. Edwards OneWorldは、インストール時にOC4Jコンテナ内にデプロイされます。クライアント・アプリケーションはすべてOC4J環境内で実行されます。J2CAデプロイでは、共通クライアント・インタフェース(CCI)によって、OC4Jクライアント・アプリケーションがリソース・アダプタと統合されます。
図3-1に、Oracle Application Serverへのコネクタのデプロイを示します。 実行時サービスの使用例では、Enterprise Java Bean、サーブレットまたはJavaプログラム・クライアントがJ2CAリソース・アダプタに対してCCIコールを実行します。アダプタは、このコールをリクエストとして処理し、EISに送ります。 EISのレスポンスはクライアントに送られます。
図3-1 Oracle Application Server AdapterのJ2CAアーキテクチャ

|
関連項目:
|
OracleAS Adapter for J.D. Edwards OneWorldの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 J.D. Edwards OneWorldの場合は、Application Explorerでjca_sample構成が事前に構成されています。 |
| IWayRepoURL | データベースへの接続をオープンするときに使用する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を使用するためのコード構造を示します。コード例は4つのステップにわかれています。
|
注意: OracleAS Adapter for J.D. Edwards OneWorldは、CCI APIを介した起動はサポートしていません。 Oracle BPEL Process ManagerおよびESBを使用した起動のみがサポートされています。 次の項は、参照のみを目的として提供されています。 |
ステップ1. コネクション・ファクトリの取得
コネクション・ファクトリはJNDIルックアップにより取得されます。
InitialContext context = new InitialContext(); ConnectionFactory cf = (ConnectionFactory)context.lookup(iwayJndi)
ステップ2. アダプタ用接続の取得
IWAFConnectionSpecは、設計時または実行時のサービス・アダプタ接続を作成するために使用されるConnectionSpecの実装です。ConnectionSpecには7つのパラメータがあります。ログ・レベルを除き、これらのパラメータに基づいて接続プーリングが完全にサポートされ、設定されます。
ConnectionSpecでアダプタ名と構成のパラメータを指定すると、iWAFConnectionSpecでJ.D. Edwards OneWorldとの相互作用を開始できます。 次に例を示します。
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はデプロイするアダプタ(この場合はJ.D. Edwards OneWorld)、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の起動を完了するために、Application Explorerによりスキーマが提供されます。
この例では、標準的なJ2CA索引付きレコードを使用しています。
// Use JCA IndexRecord, named "input" for run-time 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文書です。たとえば、次に示すのはJ.D. Edwards OneWorldリクエストXML文書のサンプルです。
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<jdeRequest type="callmethod" user="JDE" pwd="JDE" environment="DV7333" session="" sessionidle="">
<callMethod name="AddressBookMasterMBF" app="" runOnError="" trans="">
<params>
<param name="cActionCode">A</param>
<param name="cUpdateMasterFile">1</param>
<param name="cProcessEdits">1</param>
<param name="cSuppressErrorMessages"/>
<param name="szErrorMessageID" />
<param name="szVersion">ZJDE0001</param>
<param name="mnSameAsExcept" />
<param name="mnAddressBookNumber" id="1" />
<param name="szLongAddressNumber" />
<param name="szTaxId" />
<param name="szSearchType">C</param>
<param name="szAlphaName">John J. Smith</param>
<param name="szSecondaryAlphaName">John J. Smith</param>
<param name="szMailingName">John J. Smith</param>
<param name="szSecondaryMailingName">John J. Smith</param>
<param name="szDescriptionCompressed" />
<param name="szBusinessUnit"/>
<param name="szAddressLine1">1 Main St.</param>
<param name="szAddressLine2">Apt 101</param>
<param name="szAddressLine3"/>
<param name="szAddressLine4"/>
<param name="szPostalCode">75000</param>
<param name="szCity">AnyTown</param>
<param name="szCounty"/>
<param name="szState">TX</param>
<param name="szCountry">US</param>
<param name="szCarrierRoute" />
<param name="szBulkMailingCenter" />
<param name="szPrefix1" />
<param name="szPhoneNumber1">917-123-4567</param>
<param name="szPhoneNumberType1" />
<param name="szPhoneAreaCode2" />
<param name="szPhoneNumber2" />
<param name="szPhoneNumberType2" />
<param name="cPayablesYNM">Y</param>
<param name="cReceivablesYN">N</param>
<param name="cEmployeeYN">N</param>
<param name="cUserCode" />
<param name="cARAPNettingY">N</param>
<param name="cPersonCorporationCode" />
<param name="szCertificate" />
<param name="szAddlIndTaxID" />
<param name="szCreditMessage" />
<param name="szLanguage" />
<param name="szIndustryClassification" />
<param name="cEMail" />
<param name="szCategoryCode01" />
<param name="szRemark"/>
<param name="szUserReservedCode"/>
<param name="jdUserReservedDate"/>
<param name="mnUserReservedAmount"/>
<param name="mnUserReservedNumber"/>
<param name="szUserReservedReference"/>
<param name="jdDateEffective" />
<param name="szRemark1" /> </params>
<onError abort=""/>
</callMethod>
</jdeRequest>
完全なコード例
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 = "JDE";
private static String TARGET = "JDE_connection";
// Input Message
private static String msg_run = "<JDE/>";
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 JDE
// ---------------------------------------------------------
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 run-time 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()
}