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

     前  次    新しいウィンドウで目次を開く     
コンテンツに進む

Web サービス クライアント向け AquaLogic Data Services アプリケーションの有効化

Web サービスは SOA (Service-Oriented Architecture) アプリケーション開発における業界標準の手法を提供します。 Web サービスはプログラミング ロジックの分散された疎結合単位と考えることができます。再コンフィグレーションが容易に実行できるため、社内および社外の両方で、新しいアプリケーション機能を配信できます。

Web サービスおよび BEA AquaLogic Data Services Platform を使用することで、アプリケーションが企業のデータ資産を有効活用できるようになります。

この章では、データ サービスを標準 Web サービスとして公開する方法と、Web サービスおよび SDO の両方の利点を活かすクライアント アプリケーションの作成方法について説明します。 トピックは以下のとおりです。

Web サービスについての詳細は以下を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs81/webservices.html

 


Web サービスおよび AquaLogic Data Services Platform の概要

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

図 4-1 さまざまなクライアントから AquaLogic Data Services Platform 対応アプリケーションへのアクセスを可能にする Web サービス

図 4-1 さまざまなクライアントから AquaLogic Data Services Platform 対応アプリケーションへのアクセスを可能にする Web サービス

注意 : ADO.NET 対応の Web サービスおよびクライアント アプリケーションについては、「ADO.NET クライアントのサポート」を参照してください。

AquaLogic Data Services Platform 用の Web サービス統合の多様なスタイル

データ サービスと Web サービスの統合は、以下の 2 つのいずれかの方法で実行できます。

図 4-2 に示すように、エンドツーエンド プロセス (サーバとクライアントの両方でのタスク) は AquaLogic Data Services Platform 対応アプリケーションを Web サービスとして公開し、その Web サービスにあるオペレーションを呼び出すクライアント アプリケーションを実装しています。

図 4-2 Web サービスを通じてサポートされるデータ サービス Java クライアント

Web サービスを通じてサポートされるデータ サービス Java クライアント

 


サーバ側の AquaLogic Data Services Platform 対応 Web サービスの開発

AquaLogic Data Services Platform 対応 Web サービスの開発は、読み込み専用 Web サービスまたは読み書き対応機能をサポートする Web サービスのどちらを利用するかで異なります。

AquaLogic Data Services Platform 対応読み込み専用 Web サービスの開発

データ サービスから Web サービスを作成する方法は 2 種類あります。 以下の方法があります。

どちらの方法も、コンポーネント ベースの統合メカニズムとして Data Service コントロールに依存します。

Data Service コントロールを Web サービスに追加する

WebLogic Workshop を使用して、1 つまたは複数の Data Service コントロールを Web サービスに容易に追加できます。 まず、当該コントロールのフォルダを Web サービスのプロジェクト フォルダ内に作成し、その後 Data Service コントロールを作成します。

Web サービスに追加するプロセス中にコントロールを作成することもできますが、簡素化するため、ここでは Data Service コントロールを事前に作成していると仮定します。 (Data Service コントロールの作成に関する詳細は、「Data Service コントロールの作成」を参照してください。)

手順は次のとおりです。

  1. WebLogic Workshop で、[アプリケーション] ペインにある既存の Web サービス ファイル (JWS) 名をダブルクリックして開きます。
  2. Web サービスの [デザイン ビュー] タブをクリックして Web サービスのグラフ表示を開きます (図 4-3 を参照)。
  3. 図 4-3 Data Service コントロールの Web サービスへの追加


    Data Service コントロールへの Web サービスに追加の追加

  4. 右クリックし、ポップアップ メニューから [コントロールの追加] [データ サービス] を選択します。 [Insert Control - Data Service] ウィザードが起動します (図 4-4)。
  5. ダイアログの [STEP 1] フィールドに、Data Service コントロールの変数名として、Web サービスのコンテキスト内で一意の名前を入力します。
  6. 図 4-4 Insert Control - Data Services ウィザード


    Insert Control - Data Services ウィザード

  7. [STEP 2] フィールドで、[参照] をクリックしてコントロール フォルダに移動し、Web サービスを追加する Data Service コントロールを選択します。 (または、[Create a New Data Service Control] ボタンをクリックして Data Service コントロール ウィザードを起動し、新しいコントロールを作成および構成します。)
  8. [Make This a Control Factory] のチェックボックスは選択しないでください。 (このチェックボックスを選択すると、Data Service コントロールは、シングルトンとしてではなく、ファクトリ パターンを使用して実行時にインスタンス化されます。 Web サービスのコントロールを使用するには、シングルトンである必要があります。)

  9. [STEP 3] フィールドは Data Service コントロールがリモート AquaLogic Data Services Platform と関連している場合、つまり AquaLogic Data Services Platform インスタンスが WebLogic Workshop の別のドメインで動作している場合のみアクティブになります。 ダイアログでは、ユーザ名、パスワード、サーバ URL、およびリモート Data Service コントロールに関連するドメイン情報を入力します。 この情報は Web サービスとコントロールのリンクを完成するのに必要です。
  10. [Insert Control - Data Service ] の[作成] ボタンをクリックします。 LiquidDataControl.jar ファイルがアプリケーションの Libraries ディレクトリにコピーされます。 ダイアログの [STEP 1] で作成した変数は [データ パレット] にノードとして表示されます。また、ノードの下にその関数とプロシージャが表示されます。
  11. これらの関数とプロシージャを Web サービスの呼び出し可能なインタフェースに追加することにより、クライアント アプリケーションに公開することができます (WebLogic Workshop の Web サービスのデザイン ビューの左部分に表示されます。図 4-5 を参照)。以下は、この手順を説明します。

    図 4-5 Data Service コントロール関数の Web サービスへの追加


    Data Service コントロール関数の Web サービスへの追加

  12. ノードをクリックし、[データ パレット] に表示された変数の関数またはプロシージャを選択し、その関数をデザイン ビューにある Web サービスの左側にドラッグします。

Web サービスは「WebLogic Workshop で Web サービスをテストする」に示す方法でテストできます。 テスト後、Web サービスをプロダクション WebLogic Server にデプロイすると、他の Web サービスと同じように使用できます。 Java ベースの Web サービス クライアントの開発については、「クライアント側の AquaLogic Data Services Platform 対応 Web サービスの開発」を参照してください。

Data Service コントロールからWeb サービスを生成する

AquaLogic Data Services Platform 対応 Web サービスは、Data Service コントロールからステートレス Web サービスを生成して作成することもできます。 生成された Web サービスには自動的に各関数のオペレーション (メソッドの呼び出し) と Data Service コントロールに備えるプロシージャが含まれます。

このセクションの説明にしたがってステートレス Web サービスを生成およびテストします。 (この手順では、Data Service コントロールがすでに生成され、WebLogic Workshop もオープン状態になったと仮定します。)

図 4-6 Data Service コントロールからのステートレス Web サービスの生成

Data Service コントロールからのステートレス Web サービスの生成

手順は次のとおりです。

  1. WebLogic Workshop の [アプリケーション] ペインから、Web サービスの基礎として使用する Data Service コントロールの名前をクリックして選択します。 コントロールが選択されている状態で、右クリックしてポップアップ メニューを表示し、[Generate Test JWS File (Stateless)] を選択します。 WebLogic Workshop により、Data Service コントロール向けの JWS Java Web サービスが生成されます。
  2. 注意 : デフォルトでは、WebLogic Workshop により、生成された Web サービスのファイル名には 「Test」 が埋め込まれていますが、これらはデプロイ可能な Web サービスです。 生成された Web サービスの名前を変更し、「Test」という言葉を削除することができます。
  3. Web サービス プロジェクトをクリックして選択し、それを右クリックして [Build Project ] を選択します。 WebLogic Workshop により Web サービス プロジェクトを構築します。
  4. ビルド プロセスが完了したら、JWS ファイルをダブルクリックします。 必要に応じて [デザイン ビュー] タブをクリックし、生成された Web サービスをデザイン ビューに表示します。
  5. Data Service コントロールに含まれる関数およびプロシージャごとにメソッド (オペレーション) が表示されます。

AquaLogic Data Services Platform 対応読み込み/書き込み Web サービスの開発

Web サービスで Java Web サービス クライアントからの送信をサポートする必要がある場合、WSDL を生成する前に、まず JWS ファイルを修正します。手順は以下のとおりです。

  1. Java Web サービス (JWS) 実装コントロール ファイルの submit オペレーションを修正し、DatagraphDocument オブジェクトをパラメータとして受け取ります。
  2. たとえば、生成された JWS の submit() メソッドの元の署名が以下のような場合、

    java.util.Properties[] submitCustomerProfile(CustomerProfileDocument doc);

    以下のように修正します。

    java.util.Properties[] submitCustomerProfile(DatagraphDocument rootDataObject)
  3. submit オペレーションの本体を修正し、パラメータとして渡された DatagraphDocument オブジェクト からのドキュメントをインスタンス化、および初期化します。たとえば以下のように修正します。
  4. CustomerProfileDocument doc = (CustomerProfileDocument) new    DataGraphImpl(rootDataObject).getRootObject();
    return customerData.submitCustomerProfile(doc); //customerData is the AquaLogic Data Services Platform control
  5. JWS ファイルから、Web Service Definition Language (WSDL) を生成するには、ファイル名を右クリックして [Generate WSDL file] オプションを選択します。

WSDL ファイルの作成後、クライアント アプリケーション開発者に通知し、開発者たちが、必要な Web サービス クライアント インタフェースやプロキシ コードの開発を生成できるようにします (「クライアント側 AquaLogic Data Services Platform 対応 Web サービスの開発」を参照してください)。

WebLogic Workshop で Web サービスをテストする

デフォルトでは、WebLogic Workshop により、生成した Web サービス内に、2 つのオペレーションが作成されます。それらを使ってテストを実行できます。

  1. [スタート] アイコンをクリック (または WebLogic Workshop メニューから [Debug Arrow symbol Start] を選択) し、ローカル実行時を使用する Web サービスをデプロイおよび起動します。 Web サービスが起動していることを通知する情報メッセージが一時的に表示されます。 すぐに WebLogic Workshop Test Browser が起動され、テスト フォームを表示します。
  2. [テスト] ボタンをクリックし、Web サービスを起動して結果を取得します。

テスト中は必要な Web サービス機能の開発を続けます。 Web サービスが完成すると、クライアント アプリケーション開発に必要なアーティファクトを作成できます。これについては次のセクション「クライアント側の AquaLogic Data Services Platform 対応 Web サービスの開発」で説明します。

注意 : Web サービス クライアント アプリケーションおよび WebLogic Server に関する一般的な情報は、WebLogic Server ドキュメントの「WebLogic Web サービス プログラマーズ ガイド」の「Web サービスの呼び出し」の章を参照してください。

 


クライアント側の AquaLogic Data Services Platform 対応 Web サービスの開発

クライアント アプリケーションでは、静的または動的な方法で Web サービスを利用します。 この節ではこの両方について説明します。 以下のトピックでは、適切なクライアント要求について簡単に説明します。

静的 Web サービス クライアント

静的 Web サービス クライアントには以下が必要です。

AquaLogic Data Services Platform は、静的 Web サービス クライアントに対して以下のクラスを生成するのに必要なユーティリティ (Java クラスおよび Ant タスク) を含みます。

一般的な Web サービス クライアントは以下を使用して顧客レコードを取得できます。

CUSTOMERDocument doc = wssoap.getCustomer("987654");
注意 : wssoap クラスは、生成された Web サービス クライアントのプロキシ クラスのインスタンスです。また、doc オブジェクトは、生成された静的 SDO クラスの CUSTOMERDocument というインスタンスです。

動的 Web サービス クライアント

動的 Web サービス クライアントには以下が必要です。

注意 : 動的 Web サービス クライアントには、生成された SDO クラスも Web サービス クライアントのプロキシ クラスも必要ありません。

一般的な Web サービス クライアントは以下のコードで顧客レコードを取得できます。

XmlObject param = XmlObject.Factory.parse( "<msg:getCustomer xmlns:msg='http://www.openuri.org/'><CustomerID>987654</CustomerID></msg:getCustomer>");
DataObject doc = (DataObject)call.invoke(new Object[]{param});
注意 : 呼び出しクラスとは、JAX-RPC API の call インタフェースのインスタンスです。 doc オブジェクトとは、動的 SDO API の DataObject インタフェースのインスタンスです。

静的 Web サービス クライアントの開発

一般的な AquaLogic Data Services Platform 向けの静的 Web サービス開発の手順は以下のとおりです。

AquaLogic Data Services Platform プロキシを作成する前提条件として、最初に必要な SDO クラスを生成します。

Web サービス プロキシの SDO クラスを生成する。

Ant タスク (sdogen) を使用するか、Java クラス を通して Web サービス クライアントに SDO クラスを生成できます。 この節では、それぞれの方法について説明しています。

Ant を使用する SDO クラスの生成

sdogen Ant タスクにより、SDO での使用に必要な型付きのクラスを含む SDO クライアント JAR ファイルが作成されます。 タスクのどちらを使用してもかまいません。

必要な型付きのクラスを抽出。

環境設定

sdogen タスクを正常に実行するには、クラスパスに以下のファイルを含めます。

必要なクライアント (SDO) クラスを構成する JAR を作成するため、ビルド スクリプトに sdogen tas-kdef を追加します。 例えば、次のように指定します。

<taskdef name="sdogen" classname="com.bea.sdo.impl.SDOGenTask" classpath="path/to/wlsdo.jar:path/to/xbean.jar"/> 

path/to が JAR ファイルの物理場所と置き換えられます。

このタスクは、明示的に Ant FileSet を定義し、(たとえば dir が basedir になる) すべての FileSet 属性、およびネストされた属性や要素をサポートします。表 4-7 は sdogen Ant タスクが使用する属性を示しています。

表4-7 sdogen Ant タスクで使用可能な属性
属性
説明
必須/省略可能
デフォルト値
schema
個別のスキーマファイルもしくはディレクトリのファイルを示すファイルである。

注意 : パス参照ではない。 複数のスキーマ ファイルを一緒に構築する必要がある場合、スキーマを設定する代わりにネストされた fileset を使用する。

はい
なし
destfile
JAR ファイルとしてデフォルト名以外を作成する。 たとえば、myXMLBean.jar はこのタスクの結果を myXMLBean と命名された JAR ファイルに出力する。
いいえ
xmltypes.jar
classgendir
.class ファイルを生成するディレクトリ
いいえ
現在のディレクトリ
classpath
Java ファイルがスキーマの fileset に存在する場合、または fileset のインポートがコンパイルされた XMLBeans JAR ファイルを含む場合、クラスパスを指定する。 またネストされたクラスパスをサポートする。
いいえ
 
classpathref
他の場所で定義されたパスへの参照としてクラスパスを追加する。
いいえ
 
debug
ソースをデバッグ情報でコンパイルするかどうかを示す。
False (オフ) に設定されている場合、-g:none がそれをサポートするコンパイラのコマンド ラインに渡される。
True に設定されている場合、debuglevel 属性値がコマンド ライン引数を決定する。
いいえ
False (オフ)
fork
JDK コンパイラ (javac) が外部的に実行するかを指定するフラグ。
いいえ
はい
memoryInitialSize
javac が外部的に実行される場合、VM の基礎となるメモリの初期サイズ。実行されない場合は無視。 標準の VM メモリ設定に対するデフォルト値。
いいえ
マシン向けに設定された VM メモリ設定。
例 : 83886080, 81920k、または 80m。
memoryMaximumSize
javac が外部的に実行される場合、VM の基礎となるメモリの最大サイズ。実行されない場合は無視。 標準の VM メモリ設定に対するデフォルト値。
いいえ
マシン向けに設定された VM メモリ設定。 例 : 83886080, 81920k、または 80m。
verbose
ビルド メッセージ出力の量を制御する。
いいえ
True

JAR ファイルの作成

スキーマ ディレクトリに WSDL または XSD (XML schema definition) を構築し、Schemas.jar と命名された JAR ファイルを作成するには、Ant スクリプトに以下を含める必要があります。

<sdogen schema="MyTestWS.WSDL" destfile="Schemas.jar" classpath="path/to/wlsdo.jar:path/to/xbean.jar"/> 

path/to が JAR ファイルの物理的な場所を示しています。

Java を使用する SDO クラスの生成

コマンド ラインで SDOGen Java クラスを使用してデータ サービスに基づく XSD (XML schema definition) ファイルまたは WSDL ファイルから SDO クライアント クラスを生成することができます。

SDOGen は XMLBean のコンパイラ クラスを拡張する Java クラスです。 SDOGen ユーティリティのコマンドライン オプションについては 表 4-8 を参照してください。

表 4-8 Java SDO クラス生成ユーティリティのコマンドライン オプション
オプション
説明
デフォルト値
-cp [a;b;c]
クラスパス。
 
-d [dir]
バイナリ .class および .xsb ファイルのターゲット ディレクトリ。
 
-src [dir]
生成された Java ソース ファイルのターゲット ディレクトリ。
 
-srconly
Java ソース ファイルのコンパイルおよび JAR ファイルへのアーカイブを防止するフラグ。
 
-out [result.jar]
出力 JAR ファイルの名前。
xmltype.jar
-dl
インポートおよびインクルードのネットワーク ダウンロードを有効にする。
オフ (無効)。
-noupa
UPA (Unique Particle Attribution) 制限を課さない。
 
-nopvr
Particle Valid (restriction) 制限を課さない。
 
-compiler
外部 Java コンパイラへのパス。
 
-jar
JAR (Java アーカイブ) ユーティリティへのパス。
 
-ms
外部 Java コンパイラの初期メモリ
8 MB
-mx
外部 Java コンパイラの最大メモリ
256 MB
-debug
デバッグ記号でコンパイルする。
 
-quiet
Java コンソールに最小限の情報メッセージを出力する。
 
-verbose
Java コンソールに最大量の情報メッセージを出力する。
 
-license
ライセンス情報を出力する。
 
-allowmdef "[ns] [ns] [ns]"
所定のネームスペースにおける複数の defs を無視する。
 

環境設定

ユーティリティを実行するには、以下を含むクラスパスを確認する必要があります。

構文

クライアント クラスを構成する JAR を作成するには、以下のコマンド プロンプトで SDOGen を実行します。

java com.bea.sdo.impl.SDOGen [options] XMLSchema

XMLSchema には以下があります。

SDOGen の使用例

以下は、SDOGen をさまざまなオプション (表 4-8) で使用して、それぞれ異なる結果を取得する例を示しています。

SDO Web サービス クライアント プロキシの生成

Ant タスク (sdoclientgen) を使用して、SDO Web クライアントプロキシを生成できます。または、同じタスクを行うために Java クラス (WSClientGen) を呼び出すこともできます。 この節では、それぞれの方法について説明しています。

Ant を使用したクライアントプロキシの生成

sdoclientgen Ant タスクは SDO 対応の Web サービス クライアント JAR ファイルを生成します。このファイルはクライアント アプリケーションがデータ サービス コントロールから生成された JWS ファイルを消費するのに使用できます。 通常、JWS の既存 WSD ファイルからクライアント JAR ファイルを生成することができます。

生成されたクライアント JAR ファイルには、以下の要素が含まれています。

sdoclientgen タスクを使用して既存の Web サービス (必ずしも WebLogic Serverで実行する必要なし) の WSDL ファイルからクライアント JAR ファイルを生成することもできますが、タスクは通常、SDO 対応 JWS の既存 WSDL ファイルから JAR ファイルを生成するために使用されます。

以下に例を示します。

<taskdef name="sdoclientgen" classname="com.bea.sdo.impl.WSClientGenTask" classpath="path/to/SDOclasses:path/to/wlsdo.jar:path/to/xbean.jar:path/to/wlxbean.jar:path/to/xqrl.jar:path/to/webservices.jar"/> 

path/to が JAR ファイルの物理場所と置き換えられます。

注意 : 静的 Web サービス クライアントを作成するためのサンプル スクリプトも参照してください。

WebLogic Server ディストリビューションには、クライアントの実行時 JAR ファイル (webserviceclient.jar) が含まれています。このJARファイルには、WebLogic Web サービスの実行時コンポーネントをサポートするために必要なクライアント側クラスが含まれています。

Ant スクリプトの属性

表 4-9では、sdoclientgen の属性について説明します。

表 4-9 sdoclientgen Ant タスクの属性
属性
説明
必須/省略可能
packageName
生成された JAX-RPC クライアントインタフェースおよびスタブ ファイル用のパッケージ名。

あり

wsdl
クライアント JAR ファイルが生成される Web サービス(WebLogic または 非WebLogic)を説明する WSDL のフル パス名または URL。 クライアント JAR ファイルの持つ生成されたスタブ ファクトリ クラスは、デフォルト コンストラクタでこの属性の値を使用する。

あり

clientJar
JAR ファイル名、または clientgen タスクが生成されたクライアント インタフェース クラス、スタブ クラス、省略可能シリアライゼーション クラスなどを置く開いたディレクトリ名。 JAR ファイルを作成または更新するには、JAR 拡張子を含むフルネーム (myclient.jar) を指定する必要があります。指定しない場合、このネームは clientgen タスクがディレクトリとして解釈します。 指定された JAR またはディレクトリがしない場合、clientgen タスクは新規の JAR ファイルかディレクトリを作成します。

なし

classpath
SDOGen Ant タスクによって XSD または WSDL から生成された SDO クラスのパスを含める必要がある。

なし

classpathref
他の場所で定義されたパスへの参照としてクラスパスを追加する。

なし

静的 Web サービス クライアントを作成するためのサンプル スクリプト

以下の Ant スクリプトは静的 Web サービス クライアントの作成を説明する作業サンプルを提供します。 このスクリプトはすべての SDO および Web サービス クライアント のクラスを 1 つの JAR ファイルに生成し、以下の作業を行います。

環境設定

sdoclientgen タスクを実行するには、クラスパスに JAR ファイルを以下の順序で含める必要があります。

これらのファイルは以下の場所にあります (1 ファイルを除く)。
<bea_home>/weblogic81/server/lib
wlsdo.jar だけが例外的に以下の場所にあります。
<bea_home>/weblogic81/liquiddata/lib
構文

以下の例のように SDOClientGen 用の Ant タスクを定義します。

<taskdef name="sdoclientgen" classname="com.bea.sdo.impl.WSClientGenTask" classpath="path/to/SDOclasses:path/to/wlsdo.jar:path/to/xbean.jar:path/to/wlxbean.jar:path/to/xqrl.jar:path/to/webservices.jar"/>  
使用例
<sdoclientgen wsdl="http://example.com/myapp/myservice.wsdl" packageName="sdoclient" clientJar="myapps/mySDO_WSclient.jar" classpathref="all the JAR files listed in the task"/> 

Java を使用したクライアントプロキシの生成

Web サービス クライアント生成ユーティリティは WSDL から Web サービス クライアント インタフェースおよびスタブ クラスを生成するのに使用可能な Java クラス (WSClientGen) です。この WSDL は引数および戻り型に型付き SDO クラスを使用します。 ユーティリティは、ユーザにデータ サービス コントロールからの Web サービス (JWS ファイル) の消費を可能にする Web サービス クライアントを生成するのに使用します。このデータ サービス コントロールは、AquaLogic Data Services Platform クエリの呼び出し、または送信を行います。

必要な手順は次のとおりです。

  1. Web サービスの URL を使用して WSDL を取得する場合は、Web サービスが実行中であることを確認してください。
  2. AquaLogic Data Services Platform 対応 Web サービスの WSDL から JAR ファイル (型付き SDO クラス) を生成するには、sdogen ant タスクを使用します。 (sdogen の詳細については、Web サービスプロキシ用のSDOクラスの生成を参照してください。)
  3. 以下のように Java ユーティリティを実行します。
  4. java com.bea.sdo.impl.WSClientGen [options] wsdl

    WSDL は WSDL (ネットワーク上で使用可能) の URL か、ユーザのマシンにある実際の物理 WSDL ファイルのどちらかです。 表 4-10 にユーティリティに渡せるコマンドライン オプションを示します。

    表 4-10 WSClientGen ユーティリティ オプション
    オプション
    目的
    コメント
    -version
    Java コンソールにバージョン情報を出力する。
     
    -verbose
    Java コンソールに最大量の情報メッセージを出力する。
     
    -clientJar
    生成された JAR ファイル名を指定する。
    SDOClient.jar
    -packageName
    生成された JAX-RPC クライアント インタフェースおよびスタブのパッケージ名。
    sdoclient
    -overwrite
    新たに生成されたコードで既存ファイルを上書きするか指定するブール。
    True

使用例

以下はユーティリティの使用例です。

SDO Web Service Client Gen ユーティリティの使用

SDO Web Service Client Gen ユーティリティはクライアントに SDO オブジェクトをビルドするためにコマンドラインから呼び出す Ant ビルド スクリプトです。 スクリプト (パス名を含む) は以下のとおりです。

<bea_home>\weblogic81\liquiddata\bin\sdo_wsclientgen.xml 

AquaLogic Data Services Platform 対応読み込み/書き込み Web サービスの開発で説明された手順に従って作成された WSDL ファイルは、パラメータとしてユーティリティに渡されます。sdo_wsclientgen.xml によって生成された SDO オブジェクトはそのファイルに基づいています。

Ant ビルド スクリプト sdo_wsclientgen.xml 用のコンフィギュレーション パラメータは以下のとおりです。

SDO クラスをビルドするために Ant スクリプトを使用する前に、コマンド プロンプト ウィンドウで setWLSEnv.cmd を呼び出して、環境が設定されていることを確認してください。 このコマンド ファイルは $bea_home\weblogic81\server\bin ディレクトリにあります。

SDO オブジェクトを使って作業するには、クライアントの CLASSPATH に以下のパッケージを含める必要があります。

SDO クラスをビルドするために Ant ユーティリティを使用して実行するステップは、以下のとおりです。

  1. ドメイン環境を設定します。 例:
  2. \bea\weblogic81\samples\domains\ldplatform\setDomainEnv.cmd 
  3. WebLogic 環境を設定します。 例:
  4. \bea\weblogic81\server\bin\setWLSEnv.cmd
  5. クラスパスに sdotemp ディレクトリを追加します。
  6. set CLASSPATH=%CLASSPATH%;sdotemp
  7. コマンドラインから Ant を呼び出します。
  8. ant -buildfile path/to/sdo_wsclientgen.xml -Dwsdl = path/to/nameOfWSDL.wsld

    path/to はファイルの物理的な場所を示します。

(ant sdo_wsclientget.xml コマンドを発行して) Ant ユーティリティ を利用すると JAR ファイルが作成されます。その他の生成されたアーティファクトでは、JAR ファイルに型付き SDO クラスが含まれています。 この Web サービス からオペレーションを消費するすべてのクライアントに JAR ファイルを分散することができます。

Ant ユーティリティの実行後、AquaLogic Data Services Platform対応読み込み/書き込み Web サービスの開発で説明された手順 2 に従って作成した、修正済み submit オペレーションを呼び出すことができます。 たとえば、ステップ 2 で説明された submitCustomerProfile メソッドに基づくクライアント コードは以下のとおりです。

コード リスト 4-2 Submit メソッドの呼び出しの例
CustomerDataTestSoap wssoap = new CustomerDataTest_Impl().getCustomerDataTestSoap();
CustomerProfileDocument doc = wssoap.getCustomerProfile(customer_id);
doc.getCustomerProfile().getCustomerArray(0).setLastName("Test");
DataGraphImpl dg = (DataGraphImpl) doc.getDataGraph();
wssoap.submitCustomerProfile(dg.getSerializedDocument());

静的 Web サービス クライアントの開発

AquaLogic Data Services Platform の Web サービス クライアント環境の設定方法

以下の手順を実行すると AquaLogic Data Services Platform の Web サービス クライアント環境を設定することができます。

SDO Web サービス クライアント クラスを JAR ファイル (SDOClient.jar) に生成したあと、以下の JAR ファイルを以下の順序で使用することにより Web サービス クライアントのクラスパスを設定します。

Web サービス クライアントの開発手順

Web サービスのクライアント プロキシまたは JAX-PRC API を使用して Web サービスを呼び出す方法については、以下のドキュメントを参照してください。


http://edocs.beasys.co.jp/e-docs/wls/docs81/webserv/client.html#1069703

次に、Web サービスのクライアントの開発で以下の手順に従います。

  1. Web サービス メソッド (getCustomer など) を呼び出し、強く型付けされたルート SDO データ オブジェクトを取得します (CUSTOMERDocument など)。 この時点で、SDO データグラフはすでに生成され、ルート データ オブジェクトに付加されています (つまり CUSTOMERDocument)。 デフォルトでは変更追跡も有効になっています。
  2. 静的 SDO API を使用してデータを読み込みます (getCustomerName など)。 または、静的 API を使用してデータを修正することもできます (setCustomerName("J D") など)。
  3. また、動的 SDO API を使用してデータの読み込みまたは修正を行うことも可能です。

    静的および動的 SDO API を使用する挿入または削除処理についての詳細は、「データ プログラミング モデルおよび更新フレーム ワーク」を参照してください。

  4. Web サービスのプロキシ メソッドを呼び出し、変更した SDO データグラフをサーバに送信してデータ ソースを更新します。 以下に呼び出しの例を示します。
  5. wssoap.submitCustomer(((DataGraphImpl)doc.getDataGraph()).getSerializedDocument());

サンプル Java 静的 Web サービス クライアント

以下のコードは AquaLogic Data Services Platform 向けの Java 静的 Web サービス クライアントのサンプルです。

public class ClientTest {
public static void main(String[] args) throws Exception {
SimpleCtrlTest wstest = new SimpleCtrlTest_Impl();
SimpleCtrlTestSoap wssoap = wstest.getSimpleCtrlTestSoap();
CUSTOMERDocument doc = wssoap.getCustomer(987654);

doc.getCUSTOMER().setCUSTOMERNAME("J D");

wssoap.submitCustomer(((DataGraphImpl)doc.getDataGraph()).getSerializedDocument());
}

動的 Web サービス クライアントの開発

動的 Web サービスの開発には以下の手順を実行します。

動的 Web サービス環境の設定

以下の JAR ファイルを以下の順序で使用して、Web サービス クライアントのクラスパスを設定します。

注意 : 上記のファイル順序は変更しないでください。

動的 Web サービス クライアントの開発

動的 Web サービス クライアントの開発には 3 つの側面があります。 まず標準の開発手順でクライアントを作成する必要があります。 次に AquaLogic Data Services Platform に特定の手順を実行します。

動的 Web サービス クライアント開発の開始

JAX-RPC ドキュメンテーション (http://java.sun.com/webservices/jaxrpc/docs.html) の JAX-RPC にしたがって動的 Web サービス クライアントのフレームワークを作成します。 この作業には基本的に以下が含まれます。

AquaLogic Data Services Platform 固有の手順

AquaLogic Data Services Platform 向けの動的 Web サービスを有効にするには、以下の手順を実行します。

  1. WSDL への URL を使用して DataGraphCodec インスタンスを作成します。
  2. TypeMappingRegistry を作成します。
  3. TypeMapping を作成し、要求メッセージと応答メッセージ両方の SOAPElement をシリアライズおよびデシリアライズするために使用する DataGraphCodec インスタンスを登録します。
動的 Web サービス クライアント開発の完了

開発は以下の手順で完了します。

  1. 読み込みメソッドに対する JAX-RPC 呼び出しインタフェースのインスタンス (getCustomer( ) など) を作成します。
  2. Web サービスを呼び出します。
  3. SDO 動的データ API を使用して応答データの読み込み、または修正を行います。
  4. submit( ) メソッドの呼び出しインスタンスを作成します (submitArrayOfCustomer( ) など)。
  5. シリアライズした SDO データグラフを SOAP メッセージでラップし、submit( ) メソッドの実行に備えます。
  6. submit( ) メソッドを呼び出しデータ ソースを更新します。

サンプル Java 動的 Web サービス クライアント

以下のコード (コメントが強調されている部分) は、完成した AquaLogic Data Services Platform 向けの Java 動的 Web サービス クライアントのサンプルで、import 文を含んでいます。

コード リスト 4-3 サンプル Java 動的 Web サービス クライアント
import com.bea.sdo.impl.DataGraphCodec;
import com.bea.xml.XmlObject;
import commonj.sdo.DataObject;
import java.io.File;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.encoding.TypeMapping;
import javax.xml.rpc.encoding.TypeMappingRegistry;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;

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

System.setProperty("javax.xml.soap.MessageFactory", "weblogic.webservice.core.soap.MessageFactoryImpl");

// グローバル JAX-RPC サービス ファクトリのセットアップ
System.setProperty( "javax.xml.rpc.ServiceFactory", "weblogic.webservice.core.rpc.ServiceFactoryImpl");

// サービス ファクトリを作成
ServiceFactory factory = ServiceFactory.newInstance();

// qname を定義
String targetNamespace = "http://www.openuri.org/";

QName serviceName = new QName(targetNamespace, "org3Test");

QName portName = new QName(targetNamespace, "org3TestSoap");

URL wsdlLocation = new URL("http://localhost:7001/ElecWS/controls/org3Test.jws?WSDL");

// サービスを作成
Service service = factory.createService(wsdlLocation, serviceName);

// Codec を作成
DataGraphCodec dgCodec = new DataGraphCodec(wsdlLocation);

TypeMappingRegistry registry = service.getTypeMappingRegistry();

TypeMapping mapping = registry.getTypeMapping( SOAPConstants.URI_NS_SOAP_ENCODING );

mapping.register( SOAPElement.class,
new QName(targetNamespace, "getCustomer"),
dgCodec,
dgCodec );
mapping.register( SOAPElement.class,
new QName( targetNamespace, "getCustomerResponse" ),
dgCodec,
dgCodec );
mapping.register( SOAPElement.class,
new QName( targetNamespace, "submitArrayOfCustomer" ),
dgCodec,
dgCodec );
mapping.register( SOAPElement.class,
new QName( targetNamespace, "submitArrayOfCustomerResponse" ),
dgCodec,
dgCodec );

// 読み込み用の呼び出しを作成
Call call = service.createCall(portName, new QName(targetNamespace, "getCustomer"));

XmlObject reqdoc = XmlObject.Factory.parse( "<getCustomer xmlns='http://www.openuri.org/'/>");

DataObject[] customerdocs = (DataObject[]) call.invoke(new Object[]{reqdoc});


// ユーザは、ここで DataObject を修正可能
DataObject customer = customerdocs[0].getDataObject(0);
customer.setString("EmailAddress", "BEAarray@BEA.com");

String dgstring = customer.getDataGraph().toString();
System.out.println(dgstring);

// 送信用の呼び出しを作成
call = service.createCall(portName, new QName(targetNamespace, "submitArrayOfCustomer"));

XmlObject submitdoc = XmlObject.Factory.parse(   "<sub:submitArrayOfCustomer   xmlns:sub='http://www.openuri.org/'><sub:docs>" +      dgstring + "</sub:docs></sub:submitArrayOfCustomer>");

     Object obj = call.invoke(new Object[]{submitdoc});

System.out.println(obj);

}
}

  ページの先頭       前へ  次へ