クライアント アプリケーション開発者ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

Web サービスを通じてデータ サービスの呼び出し

この章では、データ サービスを業界標準 Web サービスとして公開する方法と、その Web サービスを介してデータ サービスを呼び出すクライアント アプリケーションの作成方法について説明します。

この章の内容は以下のとおりです。

 


概要

ALDSP ネイティブな Web サービス機能を使用して、web サービスにデータ サービスを直接マップすることができます。 クライアント アプリケーションは、Data Services Mediator API により web サービスを使用してデータにアクセスします。

ヒント : Java クライアントからのデータ サービスの呼び出しでは、Mediator API について詳しく説明します。web サービス対応アプリケーションを開発する前に、その章を参照してください。

データ サービスを Web サービスとして公開すると、他の Java Web サービス クライアント、Microsoft ADO.NET およびその他の非 Java アプリケーション、その他の Web サービスなど、さまざまなクライアントから情報資産にアクセスできます。図 4-1 は、クライアント アプリケーション開発者がデータ サービスと Web サービスの統合に使用できるさまざまな方法について示しています。Web サービス WSDL 処理は、サーバ上のデータ サービス処理に直接マップします。

ヒント : データ サービス処理 (読み取り、作成、更新、削除、libraryFunction および libraryProcedure) の作成の詳細については、『データ サービス開発者ガイド』を参照してください。
図 4-1 さまざまなクライアントから の ALDSP 対応アプリケーションへの Web サービス対応アクセス

さまざまなクライアントからの ALDSP 対応アプリケーションへの Web サービス対応アクセス

 


始める前に

この章は、web サービスによるデータ サービスを呼び出すクライアント アプリケーションを書く Java 開発者向けです。

推奨事項

 


はじめに

この節では、データ サービスと対話する Java クライアント アプリケーションを書くための基本的な手順を示します。

基本手順

Web サービスを使用してデータ サービスを呼び出す Java クライアントを開発する場合の基本的な手順は以下のとおりです。

  1. 最初に必要なのは、呼び出すデータ サービスです。担当者 (通常はデータ サービス開発者) がデータ サービスを作成します。
  2. そして、データ サービスから Web サービス マップ ファイルを生成する必要があります。マップ ファイルは通常、データ サービス開発者によって生成されます。Web サービス マップ ファイルの生成手順については、『データ サービス開発者ガイド』を参照してください。
  3. Web サービスをデプロイし、テストします。
  4. Java クライアントから web サービスと対話するために静的または動的 Mediator API のどちらを使用するかを決定します。各 API の概要については、「動的および静的 Mediator API」を参照してください。静的 Mediator API を使用するには、Web サービス Mediator クライアント JAR ファイルを生成または取得する必要があります。Web サービス Mediator クライアント JAR の生成手順については、『データ サービス開発者ガイド』を参照してください。
  5. ヒント : ほとんどのユースケースに対しては一般的に静的 Mediator API が推奨されます。静的 Mediator API は型セーフで一般的に動的 Mediator API よりも簡単に使用できます。
  6. Java のビルド環境を設定します。特定の JAR ファイルを CLASSPATH にセットします。詳細について、「CLASSPATH の設定」を参照してください。
  7. データ サービス関数にアクセスするために、利用可能な WSDL 処理について確認します。この処理は、処理が生成されたデータ サービスと同じ名前とパラメータを持ちます。
  8. クライアント アプリケーションを書き、テストします。以下のドキュメントで説明されているサンプル アプリケーションについて参照します。 「静的 Mediator アプリケーションのサンプル」および「動的 Mediator アプリケーションのサンプル」。

CLASSPATH の設定

CLASSPATH の設定は、静的または動的 MediatorAPI のどちらを使用するかによって異なります。

静的 Java Mediator API クライアント CLASSPATH

静的 Mediator API を使用する場合は、Java アプリケーションの CLASSPATH に次の JAR が含まれていることが必要です。

動的 Java Mediator API クライアント CLASSPATH

静的 Mediator API を使用する場合は、Java アプリケーション の CLASSPATH に次の JAR が含まれている必要があります。

サンプル アプリケーションの実行

始める方法については、この章では提供されたサンプル アプリケーション コードを実行します。静的および動的 Mediator API を使用するサンプルは含まれています。サンプルでは、データの取得、変更および更新のような簡単で一般的なユースケースを示します。詳細については、「静的 Mediator アプリケーションのサンプル」および「動的 Mediator アプリケーションのサンプル」を参照してください。

 


静的 Mediator アプリケーションのサンプル

この節では、コピー、コンパイルおよび実行できる簡単な Java プログラムが提供されます。プログラムは次の基本的なタスクを行うために WSDL オペレーションを呼び出すには静的 Mediator API を使用します: 基本的なタスクは、クライアントの認証、サーバでデータの取得、変更および更新することです。静的 Mediator API の概要については、「動的および静的 Mediator API」を参照してください。

内容は以下のとおりです。

サンプル データ サービスの設定

ここで示すサンプル アプリケーションは、サンプル データ サービスで作業するために設計されています。操作を続ける前に、このデータ サービスを作成してサーバをコンフィグレーションする必要があります。このサンプル アプリケーションが必要とするデータ サービスの作成の詳細については、「サンプル データ サービスの設定」を参照してください。

Web サービス マップ ファイルの作成

上記の例を実行するために、Web サービス マップ ファイルを生成する必要があります。これは、Data Services Studio を使用して簡単に行うことができます。詳細については、『データ サービス開発者ガイド』を参照してください。

Data Services Studio を使用してファイルを作成するには、以下の手順に従います。

  1. データ サービス プロジェクトを右クリックして [新規|Web サービス マップ] を選択します。
  2. ウィザードに従い、マップ ファイルを作成します。この例の場合は、ファイル名は PhysicalCUSTOMER.ws です。
  3. Web サービス マッパー エディタにデータ サービス ファイル PhysicalCUSTOMER.ds をドラッグします。
  4. ファイルを保存します。
  5. Web サービスをデプロイおよびテストします。これを行うには、PhysicalCUSTOMER.ds ファイルに右クリックして [Web サービスのテスト] を選択します。
ヒント : Data Services Studio、ALDSP コンソール、または Ant スクリプトを使用して Web サービス マップ ファイルを生成することができます。これらのメソッドの詳細については、『データ サービス開発者ガイド』を参照してください。

Web サービス Mediator クライアント JAR ファイルの生成

この章でリストされたサンプル Java アプリケーションを実行する前に、Web サービス Mediator クライアント JAR ファイルを生成する必要があります。この JAR に存在するクラスは「WSDL オペレーション」を呼び出すタイプセーフ メソッドを含めます。

ヒント : Data Services Studio、ALDSP コンソール、または Ant スクリプトを使用して Web サービス Mediator クライアント JAR ファイルを生成することができます。これらのメソッドの詳細については、『データ サービス開発者ガイド』を参照してください。この例の場合、Data Services Studio を使用します。

Data Services Studio を使用して Web サービス Mediator クライアント JAR ファイルを生成するには、以下の手順に従います。

  1. Web サービス マップ ファイルの生成について、前に説明した「Web サービス マップ ファイルの作成」を参照してください。
  2. [ファイル |エクスポート] を選択します。
  3. [選択] ダイアログでは、[AquaLogic Data Services Platform|Web サービス Mediator クライアント JAR ファイル] を選択して [次へ] をクリックします。
  4. [Web サービス Mediator クライアント JAR ファイル] ダイアログを以下のように完了します。
  1. [完了] をクリックします。
  2. JAR ファイルを生成した後で、Java のビルド環境の CLASSPATH に配置する必要があります。詳細については、「CLASSPATH の設定」を参照してください。
ヒント : JAR ファイルで生成したクラス名は、「生成されたクラスの命名規約」に説明された命名規約の通りにある必要があります。

Java プロジェクトの設定

コード リスト 4-1 に WSDL オペレーションを呼び出すために静的 Mediator API を使用するサンプル Java クライアントを表示します。このアプリケーションはデータ ストアから DataObject を取得します。さらに、オブジェクトを変更してデータストアに返します。この例では、Data Services Studio を使用することを前提としています。ただし、必要に応じて IDE またはビルド環境を使用することも可能です。この例の場合は、「MediatorWSClient」という Java プロジェクトを設定します。

サンプルを実行するには以下の手順に従います。

  1. 「MediatorWSClient」と言う Java プロジェクトを作成します。
  2. CLASSPATH の設定」に表示された JAR ファイルを含むように Java ビルド パスを設定します。これを行うには、[プロジェクト|プロパティ|Java ビルド パース] を選択します。生成した Web サービス Mediator クライアント JAR ファイルを追加することを確認します。
  3. Java プロジェクトで com.bea.ws. サンプルと言うパッケージを作成します。これを行うには、パッケージエクスプローラーの Java プロジェクトを右クリックして [新規|パッケージ] を選択します。
  4. パケッジで「StaticWSSampleApp.java」と言うクラスを作成します。これを行うには、パッケージ エクスプローラーのパッケージを右クリックして [新規|クラス] を選択します。
  5. 新規のソース ファイルのデフォルト内容を削除し、ソース ファイルに「コード リスト 4-1」に表示されたファイルをすべてコピーします。
  6. ファイルを保存します。図 4-2 は完了されたプロジェクトのコンフィグレーションを表示します。
  7. 図 4-2 完了されたプロジェクトのコンフィグレーション


    完了されたプロジェクトのコンフィグレーション

注意 : CLASSPATH に含まれている必要のあるインポートされたクラス PhysicalCUSTOMERDAS および PhysicalCUSTOMER は、Web サービス Mediator クライアント JAR ファイルから取得されます。
コード リスト 4-1 StaticWSSampleApp.java
package com.bea.ws.sample;

import das.ws.ld.PhysicalCUSTOMERDAS;
import physicaldss.physicalcustomer.PhysicalCUSTOMER;

import com.bea.dsp.das.DASResult;
import com.bea.dsp.sdo.SDOUtil;

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;

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

// メディエータの InitialContext を作成します。
Hashtable<String, String> hash = new Hashtable<String, String>();
hash.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
hash.put(Context.SECURITY_PRINCIPAL,"weblogic");
hash.put(Context.SECURITY_CREDENTIALS,"weblogic");
Context ctx = new InitialContext(hash);

String wsdlURL =            "http://localhost:7001/MediatorTest/PhysicalCUSTOMER.ws?WSDL";

// Context およびデータスペース名で DataAccessService ハンドルを作成します。
PhysicalCUSTOMERDAS das = PhysicalCUSTOMERDAS.getInstance(ctx, wsdlURL);

// 基本の「すべての顧客を取得する」関数をよびだします。
DASResult<PhysicalCUSTOMER> result = das.PhysicalCUSTOMER();

// 最初の PhysicalCUSTOMER DataObject を取得します。
PhysicalCUSTOMER customer = result.next();

        // 結果を反復する場合、常に dispose() を呼び出します。
        result.dispose();

//その PhysicalCUSTOMER に対して変更追跡を有効にします。
SDOUtil.enableChanges(customer);

// 顧客を変更します。
customer.setFIRST_NAME("StaticWSMediator");
customer.setEMAIL_ADDRESS("staticwsmediator@example.com");

// 変更を DSP に返します。 - 更新関数は
// PhysicalCUSTOMER の配列を取ります
das.updatePhysicalCUSTOMER(new PhysicalCUSTOMER[] { customer });
}
}

コードの実行およびテスト

アプリケーションをテストするには、サーバを起動して Java アプリケーションとしてJava クライアントを実行します。常に、Data Services Studio で Java ファイルを右クリックして、[実行|Java アプリケーション] を選択します。

Java クライアントが実行されることを確認するには、データ サービスを再テストします。

  1. データ サービス エディタでデータ サービスを開きます。
  2. テスト タブをクリックします。(図 4-3 を参照してください)。
  3. [ドロップ ダウン] メニューからオペレーションを選択します。この例の場合は、PhysicalCUSTOMER() 関数を選択します。
  4. [実行] クリックします。(図 4-3 を参照してください)。
  5. データ テーブルの 1 行目を確認します。クライアント アプリケーションは、図 4-3 に示すように、1 つ目の顧客の名前およびメール アドレスを「StaticWSMediator」および「staticwsmediator@example.com」に変更します。
  6. 図 4-3 クライアントのテスト


    クライアントのテスト

サンプル コードの検査

この節では、コード リスト 4-1 で示した Java のサンプルの部分について説明します。この節では、サンプル コードの以下のコンポーネントを検査します。

パッケージのインポート

最初の 2 つのインポートされたクラスは、生成された Web サービス Mediator クライアント JAR ファイルから取得されます。

PhysicalCUSTOMERDAS クラスは、生成されている DataAccessService クラスです。このクラスは、WSDL オペレーションを呼び出すための Java メソッドを含みます。メソッド名はそれらに対応する WSDL オペレーションと同じです。このクラスは、実際の WSDL オペレーションにマップするタイプセーフ メソッドを含めています。PhysicalCUSTOMER クラスは、データ サービスから返された DataObjects を操作するために SDO インタフェースを提供します。

import das.ws.PhysicalCUSTOMERDAS;
import physicaldss.physicalcustomer.PhysicalCUSTOMER;

import com.bea.dsp.das.DASResult;
import com.bea.dsp.sdo.SDOUtil;

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;

データ アクセス サービス ハンドルの取得

DataAccessService オブジェクトによって、データ サービスでメソッドを呼び出すことはできます。このクラスの詳細については、Javadoc を参照してください。静的 Mediator API に対して、DataAccessService (DAS) クラスでは、ハンドルを返すために「getInstance()」と言うファクトリ メソッドがあります。

getInstance() メソッドは、ハンドルを返すには以下の 2 つのパラメータを必要とします。

        Hashtable<String, String> hash = new Hashtable<String, String>();
hash.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
hash.put(Context.SECURITY_PRINCIPAL,"weblogic");
hash.put(Context.SECURITY_CREDENTIALS,"weblogic");
Context ctx = new InitialContext(hash);

String wsdlURL =            "http://localhost:7001/MediatorTest/PhysicalCUSTOMER.ws?WSDL";

// Context およびデータスペース名で DataAccessService ハンドルを作成します。
PhysicalCUSTOMERDAS das = PhysicalCUSTOMERDAS.getInstance(ctx, wsdlURL);

注意 : 静的および動的 Mediator API の両方もファイルか WSDL URL かのどちらかを受け取ります。次に例を示します。
注意 : file:///C:/RTLApp/DataServices/RTLServices/Customer.wsdl
注意 : Customer.wsdl は、ローカル ハード ドライブで格納されている WSDL ファイルです。

サービスからのデータの取得

生成された DataAccessService メソッドの PhysicalCUSTOMER() は データ サービスから結果セットを取得します。このメソッドは データ サービスからすべての顧客のオブジェクトを返します。戻り値型は、反復子と同じ作業する DASResult オブジェクトです。戻り値型の詳細については、「DASResult について」を参照してください。

DASResult<PhysicalCUSTOMER> result = das.PhysicalCUSTOMER();

結果からの DataObject の取得

DASResult.next() メソッドは Java メソッドの Iterator.next() と同じように作業します。これは、SDO DataObject である次の PhysicalCUSTOMER を返します。SDO は、データへのアクセスやデータの更新に使用する、Java ベースのデータ プログラミング モデル (API) およびアーキテクチャです。SDO の詳細については、『ALDSP コンセプト ガイド』の「サービス データ オブジェクト (SDO) の使用 」を参照してください。

PhysicalCUSTOMER customer = result.next();

結果オブジェクトの削除

結果オブジェクトを通じて反復を終了した後で、DASResult.dispose() を呼び出すことは必要です。dispose() の詳細については、「DASResult オブジェクトの削除」を参照してください。

result.dispose();

DataObject の変更

DataObject を取得した後で変更することができます。ただし、変更された内容を ALDSP サーバに戻す場合は、変更をする前に DataObject で変更追跡を有効にする必要があります。SDOUtil.enableChanges() メソッドによって、単一の DataObject または DataObject の配列に対して変更追跡を有効にすることができます。メソッドの詳細については、「データ オブジェクトの取り扱い」を参照してください。顧客のオブジェクトで変更追跡を有効にした後で、顧客のオブジェクトでの特定の値を変更するために生成されたセッターが呼び出されます。

ヒント : ゲッターおよびセッターは Mediator API ではなく SDO API の一部です。SDO の詳細については、「データ プログラム モデルと更新のフレームワーク」を参照してください。

    SDOUtil.enableChanges(customer);

    customer.setFIRST_NAME("StaticWSMediator");
    customer.setEMAIL_ADDRESS("staticwsmediator@example.com");

変更のサーバへの返し

最後に、生成された DataAccessService.updatePhysicalCUSTOMER() のメソッドが次のように単一のパラメータ付きで呼び出される。 PhysicalCUSTOMER オブジェクトの配列メソッドは、該当するデータ サービス関数を呼び出し、データの新しく変更された行でデータベースを更新する。

das.updatePhysicalCUSTOMER(new PhysicalCUSTOMER[] { customer });

 


動的 Mediator アプリケーションのサンプル

この節では、コピー、コンパイルおよび実行できる簡単な例を示します。この例は次の基本的なタスクを行うために動的 Mediator API を使用します。基本的なタスクは、 クライアントの認証、サーバでデータの取得、変更および更新することです。

サンプル コードの設定および実行

このサンプル コードを実行するには、「静的 Mediator アプリケーションのサンプル」を参照してください。サンプル データ サービスを作成する、CLASSPATH の設定およびプログラムの実行のための手順は、静的 Mediator サプルと同じです。しかし、動的 Mediator API を使用する時、Web サービス Mediator クライアント JAR ファイルを生成または参照する必要はありません。

Java クライアント コードのサンプル (動的 Mediator API)

コード リスト 4-2 DynamicWSSampleApp.java
package com.bea.ws.sample;

import com.bea.dsp.das.DataAccessServiceFactory;
import com.bea.dsp.das.DataAccessService;
import com.bea.dsp.das.DASResult;
import com.bea.dsp.sdo.SDOUtil;

import commonj.sdo.DataObject;

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;

public class DynamicWSSampleApp {
public static void main(String[] args) throws Exception {
// メディエータ用の InitialContext を作成します。
Hashtable<String, String> hash = new Hashtable<String, String>();
hash.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
hash.put(Context.SECURITY_PRINCIPAL,"weblogic");
hash.put(Context.SECURITY_CREDENTIALS,"weblogic");
Context ctx = new InitialContext(hash);

String wsdlURL =             "http://localhost:7001/MediatorTest/PhysicalCUSTOMER.ws?WSDL";

//Context およびデータスペース名、およびデータ サービス URI で
// DataAccessService ハンドルを作成します。
DataAccessService das = DataAccessServiceFactory.newDataAccessService
(ctx, wsdlURL);

//引数なしの基本の「すべての顧客を取得する」
// 関数を呼び出します。
DASResult<Object> result = das.invoke("PhysicalCUSTOMER", new Object[0]);

// 最初の PhysicalCUSTOMER DataObject を取得します。
DataObject customer = (DataObject) result.next();

        // 結果を通じて反復し終えた場合、常に dispose() を呼び出します。
        result.dispose();

// その PhysicalCUSTOMER に対して変更追跡を有効にします。
SDOUtil.enableChanges(customer);

// 顧客を変更します。
customer.set("FIRST_NAME", "DynamicWSMediator");
customer.set("EMAIL_ADDRESS", "dynamicwsmediator@bea.com");

das.invoke("updatePhysicalCUSTOMER", new Object[] { customer });
        result.dispose();

}
}

サンプル コードの検査

この節では、コード リスト 4-2 に示した Java サンプルの部分について説明します。この節で、サンプル コードの以下のコンポーネントを検査します。

クラスのインポート

サンプルはこれらのクラスを必要とします。クラスの詳細については、e-docs の Javadoc を参照してください。

import com.bea.dsp.das.DataAccessServiceFactory;
import com.bea.dsp.das.DataAccessService;
import com.bea.dsp.das.DASResult;
import com.bea.dsp.sdo.SDOUtil;

import commonj.sdo.DataObject;

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;

DataAccessService ハンドルの取得

DataAccessService オブジェクトによって、データ サービスでのメソッドを呼び出し、変更を送信することができます。 DataAccessServiceFactory は、ハンドルを返すために以下の 2 つのパラメータを必要とします。

        Hashtable<String, String> hash = new Hashtable<String, String>();
hash.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
hash.put(Context.SECURITY_PRINCIPAL,"weblogic");
hash.put(Context.SECURITY_CREDENTIALS,"weblogic");
Context ctx = new InitialContext(hash);

String wsdlURL =             "http://localhost:7001/MediatorTest/PhysicalCUSTOMER.ws?WSDL";

// Context 、データスペース名、およびデータ サービス URI で DataAccessService
// ハンドルを作成します。
DataAccessService das = DataAccessServiceFactory.newDataAccessService
(ctx, wsdlURL);

注意 : 静的および動的 Mediator API の両方のファイルか WSDL URL かのどちらかを受け入れます。次に例を示します。
注意 : file:///C:/RTLApp/DataServices/RTLServices/Customer.wsdl
注意 : Customer.wsdl は、ローカル ハード ドライブに格納されている WSDL ファイルです。

サービスからのデータの取得

この例では、invoke() のメソッドは WSDL オペレーションの PhysicalCUSTOMER を呼び出します。このメソッドは データ サービスからすべての顧客のオブジェクトを返します。メソッドは、反復子と同じ作業する DASResult オブジェクトを返します。戻り値型の詳細については、「DASResult について」を参照してください。注意: PhysicalCUSTOMER のオプレショーンは「引数なし」です。この署名は、WSDL オプレショーンを呼び出すデータ サービス関数に対応します。

DASResult<Object> result = das.invoke("PhysicalCUSTOMER", new Object[0])

結果からの DataObject の取得

DASResult.next() メソッドは Java メソッドの Iterator.next() と同じように動作します。このメソッドは結果セットの次のオブジェクトを返します。PhysicalCUSTOMER データ サービス メソッドは、SDO 固有の DataObjects を返すので、DataObject に戻り値をキャストすることができます。SDO は、データへのアクセスやデータの更新に使用する、Java ベースのデータ プログラミング モデル (API) およびアーキテクチャです。SDO の詳細については、『ALDSP コンセプト ガイド』の「サービス データ オブジェクト (SDO) の使用」を参照してください。また、「SDO とは」も参照してください。

    DataObject customer = (DataObject) result.next();

結果オブジェクトの削除

結果オブジェクトを通じて反復を終了した後で、DASResult.dispose() を呼び出すことが必要です。dispose() の詳細については、「DASResult オブジェクトの削除」を参照してください。

    result.dispose();

DataObject の変更

DataObject を取得した後で変更することができます。しかし、変更された内容を ALDSP サーバに送信する場合は、変更をする前に DataObject で変更追跡を有効にする必要があります。SDOUtil.enableChanges() メソッドによって、単一の DataObject または DataObject の配列に対して変更追跡を有効にすることができます。メソッドの詳細については、「データ オブジェクトの取り扱い」を参照してください。顧客のオブジェクトで変更追跡を有効にした後で、顧客のオブジェクトでの特定の値を変更するためにセットメソッドが呼び出されます。

    // その PhysicalCUSTOMER に対して変更追跡を有効にします。
    SDOUtil.enableChanges(customer);

    // 顧客を変更します。
    customer.set("FIRST_NAME", "DynamicWSMediator");
    customer.set("EMAIL_ADDRESS", "dynamicwsmediator@bea.com");

変更のサーバへの返し

最後に、更新 WSDL 処理で DataAccessService の invoke() メソッドが呼び出されます。この処理は単一のパラメータ (PhysicalCUSTOMER オブジェクトの配列) を取得します。データ サービスの関数は、新しい変更された行でデータベースを更新します。

das.invoke("updatePhysicalCUSTOMER", new Object[] { customer });

 


トランザクション動作および Web サービス

web サービス インタフェースを通じてクライアント トランザクションを送信する方法はないので、トランザクションは web サービスを通じてクライアントからサーバに伝播されません。障害が発生し、トランザクションがクライアント側にある場合、クライアントの障害処理方法に応じてトランザクションはロールバックされます。ただし、トランザクションはサーバには伝播されません。

static com.bea.dsp.RequestConfig.ReadTransactionMode object で属性を設定して、サーバでトランザクションを処理する方法をコンフィグレーションすることができます。

3 番目の NOT_SUPPORTED 属性は web サービス 処理でサポートされません。Mediator API によるトランザクション動作の詳細については、「トランザクション動作について」を参照してください。

コード リスト 4-3 に com.bea.dsp.RequestConfig.ReadTransactionMode 属性の設定について説明します。

コード リスト 4-3 ReadTransactionMode 属性の設定
RequestConfig config = new com.bea.dsp.RequestConfig();
RequestConfig requestConfig = request.getConfig();

if(readTransactionRequired) {
    config.setEnumAttribute(RequestConfig.ReadTransactionMode.REQUIRED);
}

 


Web サービス アプリケーションの保護

ALDSP ネイティブな Web サービスは以下のセキュリティ機能をサポートします。

ヒント : これらのセキュリティ オプションをコンフィグレーションする詳細については、『データ サービス開発者ガイド』の「Web サービス アプリケーション用のセキュリティのコンフィグレーション」を参照してください。

一般的に、セキュリティ コンフィグレーションはサーバ側で管理者またはデータ サービス開発者によって行われます。クライアント開発者として、必要な権限を満たすために必要な値をサーバに渡すことが求められます。コード リスト 4-4 では、1 つのサンプルを示します。

注意 : ネイティブな Web サービス機能によって、HTTP および HTTPS 転送プロトコルのみがサポートされます。他の転送プロトコルを使用する場合、ALDSP の AquaLogic Service Bus 転送.を使用します。この転送によって、ALSB で ALDSP データ サービスをエクスポーズすることができます。

基本認証が有効化された場合、Mediator API でコンテキスト オブジェクトを使用して以下のプロパティを渡す必要があります。WebLogic JNDI コンテキスト オブジェクトの詳細については、e-docs の『WebLogic JNDI のプログラマーズ ガイド』を参照してください。

コード リスト 4-4 では、データ アクセス サービス用の web サービス セキュリティを設定する 1 つの方法について説明します。この場合は、ID としてパブリック キー インフラストラクチャの標準 X.509 を使用するクライアント側の BinarySecurityToken 資格 プロバイダが作成されます。この資格プロバイダが Context オブジェクトでプロパティとして設定され、データ アクセス サービスを作成するために使用されます。資格プロバイダ、セキュリティ トークン、ユーザ名トークン、および信頼マネージャは基準の web サービス セキュリティ プロパティです。

詳細については、web サービス セキュリティに関する WebLogic Service ドキュメントを参照します。また、『データ サービス開発者ガイド』の「Web サービス アプリケーション用のセキュリティのコンフィグレーション」も参照してください。

コード リスト 4-4 例えば、X.509 Certificate トークン プロファイルの設定
Hashtable h = new Hashtable();
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");

// 資格プロバイダ用の空リストを作成します。.
List credProviders = new ArrayList();

//証明書および主なパラメータに基づいて ID として X.509 を使用する
// クライアント側の BinarySecurityToken 資格プロバイダを作成します。
CredentialProvider cp = new ClientBSTCredentialProvider(cert, key);
credProviders.add(cp);

String userid = "weblogic";
String password = "weblogic";
// ユーザ名およびパースワード パラメータに基づいてクライアント側の UsernameToken 資格プロバイダ
// を作成します。
cp = new ClientUNTCredentialProvider(userid.getBytes(), password.getBytes());
credProviders.add(cp);

h.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders);
h.put(WSSecurityContext.TRUST_MANAGER, userTrustMgrImpl);

Context context = new InitialContext(h);


  ページの先頭       前  次