高度なカスタマイズ > Info*Engine ユーザーガイド > SOAP サービス > Info*Engine Java EE コネクタ > JCA 規約および共通クライアントインタフェース > 共通クライアントインタフェース (CCI)
  
共通クライアントインタフェース (CCI)
* 
Info*Engine の操作は、CCI レベルではなく、生成後の Data Access Objects (DAO) により実行されるのが理想的です。DAO 生成の詳細については、スタンドアロン Java SOAP クライアントの例を参照してください。
Info*Engine Java EE コネクタでは、共通クライアントインタフェース (CCI) を実装することにより、操作のための専用 API を回避します。
CCI を使用すると、クライアントから基盤となる EIS のデータ保管場所への接続を記述するコードの問題を簡略化できます。EIS ベンダーは、CCI を使用して自社製品への汎用インタフェースを記述できます。この共通のインタフェースにより、その製品は任意の Java EE 準拠プラットフォーム上のクライアントと連動できます。同様に、アプリケーション開発者は、EIS ごとに異なる API を学習することなく、API 呼び出しを 1 セット理解して使用するだけで、任意の基本 EIS にクライアントを接続できます。
CCI では、以下のクラスを使用します。
com.infoengine.connector.IeConnectionSpec
com.infoengine.connector.IeInteractionSpec
com.infoengine.connector.IeInteractionResult
com.infoengine.connector.IeConnectionSpec
com.infoengine.connector.IeConnectionSpec クラスを使用すると、接続の作成時に資格証明を渡すことができます。このクラスは、標準の UserName および Password プロパティをサポートしています。また、レスポンスでローカライズされたデータの生成を可能にする locale プロパティ、およびシングルサインオン (SSO) シナリオで使用可能な authUser プロパティもサポートしています。送信リクエストに電子署名するようにコネクタが設定されている場合、またはクライアントが信頼されているホスト上に存在する場合にのみ、authUser プロパティは Info*Engine によって受け入れられます。
com.infoengine.connector.IeInteractionSpec
com.infoengine.connector.IeInteractionSpec クラスは、Info*Engine の操作を制御します。標準の FunctionName プロパティでは、呼び出す関数のメソッドを指定します。この値は、呼び出すタスク代理の名前に対応します。その他の ClassName プロパティでは、タスク委任が属するクラスを指定します。この値は、呼び出すタスク代理を含むタイプ識別子に対応します。
com.infoengine.connector.IeInteractionResult
javax.resource.cci.Interaction 実装は、入力レコードの実行のみをサポートしています。入出力レコードの実行はサポートしていません。Interaction の実装は、com.infoengine.connector.IeInteractionResult のインスタンスを常に返します (javax.resource.cci.Record の実装)。IeInteractionResult クラスは、SOAP レスポンスの単純なラッパーです。レスポンスオブジェクトは、getResult() メソッドを使用して読み込むことができます。Interaction は、MappedRecord または IndexedRecord のいずれかを入力として受け入れます。
MappedRecord が渡される場合、マッピングのキーはパラメータ名、値はパラメータ値です。IndexedRecord が渡される場合、渡されるパラメータの各値は name=value のペアである必要があります。理想的には、java.lang.String 以外のデータタイプを渡さない name=value 文字列として MappedRecord を使用します。
以下は、Info*Engine の操作例です。
ConnectionFactory cxf = getLDAPFactory (); // look up in JNDI
Connection cx = null;
try {
// get connection with credentials
IeConnectionSpec cxSpec = new IeConnectionSpec ();
cxSpec.setUserName ( "wcadmin" );
cxSpec.setPassword ( "wcadmin" );
cx = cxf.getConnection ( cxSpec );
// or anonymous
//cx = cxf.getConnection ();
Interaction ix = cx.createInteraction ();
IeInteractionSpec ixSpec = new IeInteractionSpec ();
ixSpec.setClassName ( "org.myOrg.Math" );
ixSpec.setFunctionName ( "sum" );
RecordFactory rFact = cxf.getRecordFactory ();
MappedRecord iRec = rFact.createMappedRecord ( "input" );
iRec.put ( "x", new Integer ( 4 ) );
iRec.put ( "y", new Integer ( 5 ) );
IeInteractionResult result =
(IeInteractionResult)ix.execute ( ixSpec, iRec );
Integer sum = (Integer)result.getResult ();
System.out.println ( "sum is " + sum.intValue () );
} catch ( Exception ex ) {
ex.printStackTrace ();
} finally {
if ( cx != null ) cx.close ();
}