BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

WebLogic Platform サンプル
アプリケーション
ツアー

 前 次 目次 PDF で表示  

Web サービス ツアー

サンプル アプリケーションには、WebLogic Workshop で作成した 2 つの Web サービスが含まれています。Avitek Digital Imaging の B2C (企業消費者間取引) サンプル ポータル (サンプルの「はじめに」ぺージのセクション 02) のツアーを終了すると、Web サービスから返された結果が表示されます。1 つ目の Web サービスは、サイトの商品評価ポートレットに表示される製品レーティングのルックアップを実行します。2 つ目の Web サービスは、クレジット カードの支払認可を実行します。

WebLogic Platform サンプルのこのツアーでは、Web サービスを作成する開発サイクルにおいて、BEA WebLogic Workshop がどのように機能しているかを説明します。さらに、Portlet Wizard を使用して、製品レーティング Web サービスの WSDL を参照し、ポートレット用のコードを生成する方法についても説明します。

注意: ここで示す情報は、サンプル アプリケーションの [はじめに] ページの [Web サービス技術ツアーの開始] ボタンをクリックして表示することもできます。

この章には次の節があります。

 


WebLogic Workshop の起動

最初の手順は WebLogic Workshop のビジュアルな開発環境を起動することです。この節では、サポート対象プラットフォーム Microsoft Windows および UNIX での起動方法を説明します。

サポート対象プラットフォームについては、BEA e-docs Web サイトの「サポート対象プラットフォーム」ページを参照してください。

Microsoft Windows の [スタート] メニューから WebLogic Workshop を起動するには、次の順に選択します。

[プログラム|BEA WebLogic Platform 7.0|WebLogic Workshop|WebLogic Workshop]

UNIX で WebLogic Workshop を起動するには、次の手順を実行します。

  1. ファイル システム ブラウザまたはシェルを開きます。

  2. BEA_HOME ディレクトリ構造内の Workshop.sh ファイルを検索します。

    例:

    $HOME/bea/weblogic700/workshop/Workshop.sh

  3. そのディレクトリに移動し、次のコマンドを入力します。
    sh Workshop.sh

  4. または、ファイル システム ブラウザから Workshop.sh をダブルクリックします。

プロジェクトの場所について

このツアーでは、WebLogic Platform サンプル アプリケーションの WebLogic Workshop で定義された 2 つの Web サービスについて紹介します。この 2 つの Web サービスで構成されるプロジェクト ファイルは、BEA_HOME ディレクトリの下の次の場所にインストールされます。

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eWebServicesApp¥workshop¥productEvalWSC 
weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eWebServicesApp¥workshop¥paymentWS 

これらの Web サービスを表示し、テストする最も簡単な方法は、太字で示されている上記の 2 つのフォルダを次のフォルダにコピーすることです。

weblogic700¥samples¥workshop¥applications¥samples 

コピーが終了すると、このフォルダの階層構造は次のようになります。


 

次に、WebLogic Workshop で、[プロジェクトを開く] メニューのオプションを使用し、各 Web サービスの JWS ファイルに移動します。インストール後に初めて WebLogic Workshop を起動する場合は、新しいプロジェクトを作成するか、または新しいプロジェクトを開くよう求められます。その場合には、次の手順を実行します。

  1. トップレベル メニューから [ファイル|プロジェクトを開く] をクリックします。

  2. 次のように、samples プロジェクトを選択します。

  3. [開く] ボタンをクリックします。


     

productEvalWSC および paymentWS の 2 つのフォルダを WebLogic Workshop の samples プロジェクト フォルダにコピーしているため、これらのフォルダはプロジェクト ツリーで次のように表示されます。


 

注意: WebLogic Workshop の各プロジェクトは J2EE Web アプリケーションに対応しており、これは、samples フォルダに WEB-INF フォルダがあることからもわかります。

たとえば、プロジェクト ツリーの productEvalWSC フォルダを展開し、EvalProduct.jws ファイルをダブルクリックすることができます。WebLogic Workshop のビジュアルな開発環境では、次のような画面が表示されます。


 

WebLogic Server インスタンスが稼動していないことに注意してください。サーバの起動オプションについては、次の節を参照してください。

サーバの起動オプション

Web サービスの定義を単に表示する場合は、WebLogic Workshop のビジュアルな開発環境で WebLogic Server インスタンスを起動する必要はありません。ただし、このツアーで Web サービスを実行し、テストする場合には、次の手順を実行します。e2eDomain のサーバ インスタンスがすでに稼動していますが、このツアーでは別のサーバ インスタンスを起動して、次のディレクトリにある Web サービスを実行し、テストします。

weblogic700¥samples¥workshop¥applications¥samples

ここでは、プロジェクトの場所についてでの説明に従って、paymentWS および productEvalWSC の 2 つのフォルダを Platform の samples 領域から Workshop の samples 領域にコピーしていることを前提としています。

Web サービスを実行し、テストするには、次の手順を実行します。

  1. WebLogic Workshop のビジュアルな開発環境のトップレベル メニューから
    [ツール|プリファレンス] の順にクリックします。

  2. [パス] タブをクリックします。

  3. 起動するサーバ インスタンスのデフォルトの情報は、正しいものである必要があります。ドメインが「workshop」であることを確認します。

  4. ブラウザのパスが正しいことを確認します。正しくない場合は、使用しているブラウザの実行ファイルの正しい場所を参照します。

    次の画面には、サンプルの値が表示されています。


     

  5. [プリファレンス] 画面で [OK] をクリックします。

  6. トップレベル メニューから [ツール|WebLogic Server の起動] をクリックします。

サーバが起動すると、画面の下に [サーバが実行中です。] ステータスが表示されます。

注意: WebLogic Workshop で作成し、cgDomain 以外のドメインにすでにデプロイしている Web サービスをテストすることができます。たとえば、e2eDomain には、次のディレクトリにデプロイされた paymentWSproductEvalWSC の 2 つの Web サービスがインストールされています。

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eWebServicesApp¥workshop¥*

e2eDomain のサーバ インスタンスが稼動しているため、WebLogic Workshop のビジュアルな開発環境を開かなくても、ブラウザで次の場所を指定して、これらの Web サービスをテストできます。

http://localhost:7501/workshop/productEvalWSC/EvalProduct.jws
http://localhost:7501/workshop/paymentWS/Payment.jws

WebLogic Workshop からこのテスト ページを呼び出すかどうかにかかわらず、WebLogic Workshop には、Web サービスのテストに非常に有用なこれらのページが用意されています。

次の節では、WebLogic Workshop の機能と Web サービス定義のプロセスの概要を説明します。

 


WebLogic Workshop を使用した Web サービスの定義 - 概要

WebLogic Platform のサンプル アプリケーション用に作成された Product Evaluator および Payment の 2 つの Web サービスについて説明する前に、WebLogic Workshop を使用して Web サービスを定義する基本手順を説明します。また、この興味深い新製品、WebLogic Workshop についても簡単に紹介します。また、詳細情報を参照するためのオンライン ドキュメントへのリンクも載せています。

WebLogic Workshop は、新しいビジュアルな開発環境で、アプリケーション開発者も J2EE の専門家もエンタープライズクラスの Web サービスの構築とデプロイを簡単に行えます。製品は次の 2 つの主要コンポーネントで構成されています。

WebLogic Workshop のビジュアルな開発環境

WebLogic Workshop のビジュアルな開発環境は、Web サービス アプリケーション開発に最適な環境です。プロジェクト管理、構文の強調表示、コード補完、および統合デバッグなどの標準機能もすべて含まれています。また、WebLogic Workshop は、Web サービスへのビジュアルで便利なアクセス方法を提供しています。例として、[デザイン ビュー] 画面を次に示します。


 

開発中の Payment Web サービスが画面中央に表示されます。この [デザイン ビュー] 画面により、ユーザは、新しいメソッドの作成、コントロールのプロパティ設定、および Web サービスの全体構造や外部との関係の指定をグラフィカルに行うことができます。この製品が目標とするのは、開発者が通常の Java プログラミングの手続きを意識することなく、ビジネス ロジック (一連の各メソッドに応答して実行されるコード) の記述に専念できるようにすることです。WebLogic Workshop は双方向編集をサポートしているため、グラフィカルな環境での変更はすぐにコードに反映され、またコードでの変更はグラフィカルな環境にすぐに反映されます。

WebLogic Workshop の [ソース ビュー ] 画面には、標準の Java IDE 編集機能がすべて備わっており、Java Web サービス (JWS) の注釈が表示されます。たとえば、次のように表示されます。


 

WebLogic Workshop のコントロール

WebLogic Workshop のコントロールは主要な新機能で、エンタープライズ リソースおよび J2EE API の使用を簡素化します。WebLogic Workshop によって、複雑な API の使用が簡素化され、外部リソースにアクセスするためのオブジェクト指向プログラミングの量も軽減されます。たとえば、WebLogic Workshop には、JDBC API を簡素化するデータベース コントロールがあります。データベース管理者は、単純な宣言形式で、Java メソッドと SQL 文をリンクする再利用可能なデータベース コントロールを作成できます。次に、開発者は、これらのコンポーネントを使用して、単純な関数呼び出しでデータベース リソースにアクセスできます。

たとえば、productEvalWSC Web サービスでは、WebLogic Workshop を使用して、ProductEvalDBControl というデータベース コントロールを定義します。データベース コントロールの 4 つのメソッドのうちの 1 つは、次のような findRatingData です。

     /** 
* @jws:sql statement="SELECT RELIABILITY_RATING,
VALUE_RATING, OVERALL_RATING,
COMMENTS FROM E2E_PRODUCT_EVAL
WHERE SKU = {productId}"
*/
     public Evaluation findRatingData(String productId)
throws SQLException, ControlException;

SQL 文と Java メソッドが、WebLogic Workshop の特定の Javadoc 注釈によってどのように関連付けられているかに注目してください。このようにメソッドがコントロール上に置かれると、コントロールのユーザは単に関数を呼び出すだけで SQL コマンドを実行できます。

Java Web サービス ファイルとコントロール ファイル

設計時ツールと実行時フレームワークの接点は、Java Web Service (JWS) ファイルと関連する制御 (CTRL) ファイルです。

JWS ファイルは、追加機能を表すために (Javadoc 構文を使用して) 注釈が付けられた標準の Java ファイルです。注釈を使用すると、Web サービスとそのプロパティをグラフィカルに表示できます。また、フレームワークは注釈を使用して、EJB および J2EE のコードを生成し、Web サービスを実行します。コード生成をツールからフレームワークに移すことで、開発者は自らが記述していないコードの管理と保守を行わずに済みます。

拡張子 CTRL の付いたファイルは、WebLogic Workshop のコントロール ファイルです。通常、これらのファイルには、データベースや別の Web サービスなどのリソースへのアクセスを簡単にするメソッド定義の集合が格納されます。CTRL ファイルは次のようなコントロールを表すことができます。

WebLogic Workshop フレームワーク

Web サービスのビジネス ロジックをすべて含む JWS ファイルが作成されると、WebLogic Workshop フレームワークにより、JWS ファイルを実行するために必要な標準の EJB コードが生成されます。WebLogic Workshop フレームワークは、注釈を使用して、エンタープライズクラスの Web サービスを構築するため特別に設計された機能をエクスポーズします。WebLogic Workshop フレームワークにより次のことを実行できます。

Web サービスの開発プロセスの概要

ツアーのこの部分では、Web サービスを構築するための基本手順を簡単に説明します。それぞれの基本手順の詳細については、WebLogic Workshop のオンライン ドキュメントを参照してください。チュートリアルから開始するのが最適です。チュートリアルは、トップレベル メニューから [ヘルプ|チュートリア
ル] をクリックすると、ビジュアルな開発環境で使用できます。または、BEA e-docs Web サイトの
WebLogic Workshop のページでチュートリアルを開始して参照することもできます。「チュートリアル : 初めての Web サービス」というトピックを検索してください。

  1. WebLogic Workshop を起動し、メソッド、イベント、コントロールの定義を開始してテストを実行します。

  2. アプリケーションに応じて、非同期通信のサポートを追加します。

    非同期通信でのクライアントと Web サービス間の通信では、Web サービスが応答を返している間は、通信が強制的に停止されることはありません。株価が特定の値になった場合に通知するなどのコールバックを追加することもできます。

  3. データベース コントロールを追加します。

    この手順では、データベース コントロールを Web サービスに追加します。データベース コントロールにより、Web サービスからデータベースにアクセスできます。コントロールは、Web サービスと他のデータ リソース (データベース、他の Web サービス、Java Message Services など) 間のインタフェースとして機能します。

  4. アプリケーションに応じて、サービス コントロールを追加します。

    Web サービスにサービス コントロールを追加して、別の外部 Web サービスを呼び出すことができます。

  5. 必要に応じて、JMS および EJB などのコントロールを追加します。

    JMSControl を使用することで、Java Message Service (JMS) を介して利用できるコンポーネントにアクセスできます。このコントロールにより、XML などさまざまな種類のメッセージを送受信できます。また、EJBControl を使用して、Enterprise Java Beans (EJB) にアクセスすることもできます。この EJBControl は、Web サービス設計に EJB インタフェースを表す単一のコンポーネントを提供して、EJB の使用を簡素化します。

  6. 必要に応じて、マッピング用のスクリプト ファイルを追加します。

    Web サービスと他のコンポーネント間で交換する特定の型の XML メッセージを処理、またはコントロールする必要がある場合は、XML マップを使用できます。XML マップにより、WebLogic Server の XML から Java への変換をカスタマイズすることができ、またその反対の操作も可能です。

  7. 取消および例外を処理するサポートを追加します。

    TimerControl を使用すると、Web サービスにタイマー機能を追加できます。これにより、処理の実行を指定した時間に限定したり、一定の間隔で処理を実行させることができます。また、onException コールバックを使用して、Web サービスの処理により生じた例外を処理することもできます。このコールバックによって要求されると、コードは、必要なクリーンアップを実行したり、クライントにメッセージを送信したりします。

  8. 必要に応じて、Web サービスを変更し、ポーリング インタフェースをサポートします。

    Web サービスを構築すると、WebLogic Workshop により、クライアント ソフトウェアで使用できるクラスが生成されます。これらのプロキシ クラスを使用して、クライアントはサービスのメソッドを呼び出すことができます。プロキシ クラスは [Test View] からダウンロードできます。

  9. セキュリティを設定し、Webapp の一部として Web サービスをデプロイします。

    HTTP ではなく HTTPS プロトコルを介して Web サービスをエクスポーズすることで、Web サービスのセキュリティを高めることができます。これを実行するには、Web サービスのプロジェクトに関連付けられたコンフィグレーション ファイルを編集します。次に、JwsCompile コマンドを使用して、Web サービスをパッケージ化し、プロダクション サーバにデプロイできます。

これで基本手順の説明は終わりです。次の節では、WebLogic Platform サンプル アプリケーションの WebLogic Workshop で作成した productEvalWSC Web サービスについて説明します。

 


Product Evaluator Web サービスの定義

架空の会社、Avitek Digital Imaging の B2C (企業消費者間取引) ポータル Web サイトにの製品カタログを参照しているユーザ向けに、次のような商品評価ポートレットを用意しました。


 

このポートレットは、WebLogic Workshop で作成した Web サービスを使用して、選択したカタログ アイテムの製品レーティング情報を返します。ここでは、productEvalWSC という Web サービスについて説明します。また、Portlet Wizard で商品評価ポートレットを作成するための手順についても説明します。

既存の productEvalWSC Web サービスの表示

WebLogic Workshop のプロジェクト ツリー ウィンドウで、次のディレクトリにコピーした productEvalWSC フォルダをダブルクリックします。

weblogic700¥samples¥workshop¥applications¥samples¥productEvalWSC

この手順をツアーの前の部分で省略している場合は、プロジェクトの場所についてを参照してください。その後、このページに戻ってください。

展開した productEvalWSC プロジェクト フォルダ内の EvalProduct.jws という Java Web サービス ファイルをダブルクリックします。次の画面は、この Web サービスの [デザイン ビュー] 画面です。


 

WebLogic Workshop を使用して、ProductEvalDBControl とそのメソッドを定義しました。次のようなメソッドがあります。

次に、WebLogic Workshop を使用して、JWS の次のメソッドを定義しました。

[デザイン ビュー] 画面を見ると、小さな (s)、(c)、(F) の記号が JWS メソッドに付いていることがわかります。これらの記号は、どのメソッドが Web サービスの会話を開始 (s) (getEvaluation) し、どのメソッドが会話を続行 (c) (getComments から getValueRating まで) し、どのメソッドが会話を終了 (F) (endEvaluation) するかを示します。

注意: 本番環境の Web サービスでは、製品の評価コメント、総合的なレーティング、信頼性のレーティング、および価格のレーティングのそれぞれを返す個別の呼び出しは作成しません。個別の呼び出しではなく、Web サービスで複合オブジェクトを作成し、1 回の呼び出しですべてのレーティングを受け取ります。複合オブジェクトを使用し、個別に呼び出しを行わないことで、パフォーマンスが向上します。

WebLogic Workshop のビジュアルな開発環境でデータベース コントロールおよびそのメソッドを定義することは簡単です。このツアーでは、コントロールとメソッドを作成する手順は説明しません。これらの手順は、WebLogic Workshop のドキュメントに記載されています。このドキュメントは、ビジュアルな開発環境で参照できます。また、BEA e-docs Web サイトの WebLogic Workshop のページでも参照できます。

ここでは、ProductEvalDBControl データベース コントロールとそのメソッドの目的について簡単に説明します。開発の過程で、本稼動に移行するエンタープライズ アプリケーション用にデータベース スキーマを完了する前に、必要に応じてメタデータを作成したり削除するデータベース コントロール メソッドをテスト用に定義しておくことが開発に役立ちます。開発プロセスを簡潔にするため、まず createProductEvaluatorTable メソッドおよび dropProductEvaluatorTable メソッドを定義することから始めました。WebLogic Workshop では、各メソッドの矢印をダブルクリックして、その SQL 文を表示できます。たとえば、createProductEvaluatorTable の定義は次のようになります。


 

次に、insertEvaluationRecord メソッドおよび findRatingData メソッド (WebLogic Workshop のビジュアルな開発環境の SQL 文を参照) を定義しました。

これらの利用可能なデータベース コントロール メソッドを使用して、データベース コントロール メソッドを使用する JWS メソッドを定義しました。たとえば、getEvaluation メソッドは、Web サービスの会話を開始し、データベース コントロールから findRatingData メソッドを使用します。WebLogic Workshop では、
[ソース ビュー] タブを選択するか、または getEvaluation メソッドの下線の付いたリンクをクリックしてそのメソッドを開始する行の近くに [ソースビュー] を表示して、JWS のコードを表示できます。たとえば、次のように表示されます。

* @jws:operation
* @jws:conversation phase="start"
*/
public String getEvaluation(String productId)
{
try
{
evaluation = productEvalDB.findRatingData(productId);
}
catch (java.sql.SQLException e)
{
// will be interpreted as productId not found
}
if( evaluation != null )
{
return "SUCCESS";
}
else

{
return("NOT FOUND");
}
}

EvalProduct.jws、つまり productEvalWSC の JWS に定義したメソッドのコードを WebLogic Workshop で参照することができます。ビジュアルな開発環境におけるメソッド定義の詳細については、WebLogic Workshop のドキュメントを参照してください。ドキュメントはビジュアルな開発環境で参照できます。また、BEA e-docs Web サイトの WebLogic Workshop のページでも参照できます。

productEvalWSC Web サービスの構築とテスト

cgDomain の WebLogic Server インスタンスが稼動していない場合は、これを起動します。この手順をツアーの前の部分で省略している場合は、サーバの起動オプションを参照してください。その後、この節に戻ってください。

サーバが稼動している場合は、WebLogic Workshop のビジュアルな開発環境の下部に次のようなステータス アイコンが表示されます。


 

サーバが稼動した状態で、[デバック|ビルド] をクリックします。定義済みの Web サービスの構築が完了すると、WebLogic Workshop はコンパイルした JWS クラスを次のディレクトリに配置します。

weblogic700¥samples¥workshop¥cgServer¥.jwscompile¥_jwsdir_samples
¥classes¥productEvalWSC¥*.class

サーバを稼動した状態で、[デバック|開始] をクリックします。

テスト ページはブラウザベースです。最初に表示されるタブ付きのページは [Test Form] です。ここでは、[Overview] タブを選択します。次の画面は、blues というリモート マシン上でサーバを稼動している状態の [Overview] ページを示しています。


 

[Test Form] タブを選択します。サンプル データを入力すると、productEvalWSC Web サービスをテストできます。Web サービスを cgDomain (WebLogic Workshop で使用されるデフォルト サーバ) でテストしているため、getEvaluation メソッドを試行する前に、次の最初の [Test Form] ページにある CreateProductEvaluatorTable メソッドまず始めに実行する必要があります (CreateProductEvaluatorTable メソッドを使用すると、ビジュアルな開発環境を使用する間だけ、テスト目的で簡単にデータベース テーブルを作成し、データを挿入できます。本稼動では、Web サービスはプロダクション データベースを使用します)。


 

Web サービス メソッドは、「Created」メッセージを返します。たとえば、次のように表示されます。


 

次に、[Test Form] の [Start operations] リンクをクリックします。更新されたページで、Web サービスの getEvaluation メソッドのテストを開始します。たとえば、次のように [productId] フィールドに「pix1000」と入力します。次に、[getEvaluation] ボタンをクリックします。


 

Web サービスの会話が呼び出され、WebLogic Workshop のランタイム エンジンが次の画面で示すように SUCCESS ステータスを返します。


 

テストを続行するには、このページの [Continue this conversation] リンクをクリックします。WebLogic Workshop は、次の画面のように productEvalWSC Web サービスに定義されている続きのメソッドの一覧を返します。


 

これらのメソッドを 1 つクリックすると、この pix1000 カメラの製品レーティングを Web サービスが返します。たとえば、getReliabilityRating メソッド テストをクリックすると、WebLogic Workshop は次のように返します。


 

Web サービスが整数の 2 を返していることがわかります。商品評価ポートレットでは、この結果、最高 5 つの星のうち 2 つの星が表示されます。たとえば、次のように表示されます。


 

[Test Form] で、会話の他のメソッドを試行できます。前述したように、本番環境の Web サービスでは、製品の評価コメント、総合的なレーティング、信頼性のレーティング、および価格のレーティングのそれぞれを返す個別の呼び出しは作成しません。個別の呼び出しではなく、Web サービスで複合オブジェクトを作成し、1 回の呼び出しですべてのレーティングを受け取ります。

WebLogic Workshop を使用して、productEvalWSC の Java Web サービス (JWS) ファイルを作成してテストした後、Portlet Wizard を使用して、承認前のバージョンのポートレット (最終的に提示するコーディング、グラフィック、Webflow、およびパッケージ化の変更を含まない) を生成します。Portlet Wizard ツールは、WebLogic Portal が提供するグラフィカル ツール E-Business Control Center の一部です。Portlet Wizard を使用して、ポートレット用の Web サービス インタフェース コードを生成します。また、WebLogic Server を使用して、クライアント プロキシを生成します。

Web サービスに初めてアクセスすると、WebLogic Workshop がすべての EJB を自動的に生成するため、開発者が行うアクションや作業は何もないことがわかります。ここでは、最初にアクセスすると、productEvalWSC.EvalProductEJB.jar ファイルが次のディレクトリに作成されます。

weblogic700¥samples¥workshop¥cgServer¥.jwscompile¥_jwsdir_samples¥EJB

Web サービスのクラス ファイルは次のディレクトリに作成されます。

weblogic700¥samples¥workshop¥cgServer¥.jwscompile¥_jwsdir_samples¥classes¥productEvalWSC¥*.class

Web サービスの WSDL の保存

開発プロセス中はいつでも、Web サービスを記述する Web Service Description Language (WSDL) ファイルを WebLogic Server から利用できます。WSDL は、標準の XML ドキュメントで、World Wide Web Consortium (W3C。詳細は http://www.w3.org を参照) により管理されています。

WSDL ファイルは、Web サービスが利用可能なプロトコルの他、Web サービスがエクスポーズするすべてのメソッドを (送受信可能な XML メッセージの形式で) 記述します。WSDL ファイルは、クライアント アプリケーションが Web サービスを使用するために必要な情報をすべて提供します。

JWS ファイルに対応する WSDL ファイルを入手するには、次のような方法があります。

Portlet Wizard を使用した、商品評価ポートレット用の最初のコードの生成

E-Business Control Center (EBCC) は、Java クライアントベースのツールの集まりです。このツールには、ルールの定義、Webflow の編集、ポータルの作成と管理などの複雑な作業を簡単に行えるグラフィカル インタフェースが用意されています。E-Business Control Center のユーザは、ポイントアンドクリック方式のインタフェースで作業を行い、サーバと同期をとる XML ファイルを生成します。

EBCC の機能の 1 つに Portlet Wizard があります。Portlet Wizard を使用して、Web サービス用の WSDL を参照し、ポートレットに必要なコードを生成できます。次の一覧では、Portlet Wizard の一般的な手順について簡単に説明します。Portlet Wizard で作業する際には、既存の evaluator ポートレット ファイルを上書きしないようにしてください。

注意: インストールされた evaluator.jsp ポートレットで使用されるパッケージ化と変数は、次の手順で Portlet Wizard により作成される content.jsp ファイルとは異なります。この節の目的は、Portlet Wizard で何が最初に作成されるかを説明することです。

たとえば EBCC を Windows で起動するには、[スタート] メニューから次のようにクリックします。

  1. [プログラム|BEA WebLogic Platform 7.0|WebLOgic Portal 7.0|E-Business Control Center]

  2. EBCC のトップレベル メニューから、[ファイル|プロジェクトを開く] をクリックします。BEA_HOME の下にある次のフォルダに移動します。
    weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp-project

  3. フォルダの e2eApp-project.eaprj ファイルを選択し、[開く] ボタンをクリックします。

  4. 次に、EBCC のトップレベル メニューから、[ファイル|新規作成|プレゼンテーション|ポートレット] をクリックします。

  5. 次のようなオプション セットとともに最初に表示される [ポートレットの新規作成] 画面で、[OK] ボタンをクリックします。


     

  6. [ポートレット名] 画面で、ポートレットに evaluatortest などの一意な名前を付けます。[ポータル] プルダウン メニューで、[b2cPortal] を選択します。次に、[次へ] ボタンをクリックします。


     

  7. [ポータル ページ ] 画面で、b2cPortal で利用可能なページ一覧から [Products] ページを選択します。次に、[次へ] ボタンをクリックします。


     

  8. [ポートレット コンポーネント] 画面で、ポートレットに入れるコンポーネントを選択するか、またはこれらのオプションのチェックを外したままにします。次に、[次へ] ボタンをクリックします。


     

  9. [コンテンツ タイプ] 画面で、[Web サービス (複数可)] オプションを選択します。次に、[次へ] ボタンをクリックします。


     

  10. [サーバの場所 ] 画面で、WebLogic Server がインストールされている場所を指定します。次に、[次へ] ボタンをクリックします。


     

  11. [生成されたコード タイプ] 画面で、[出力オプション] プルダウン メニューから [Web サービス インタフェース] を選択します。商品評価ポートレットは対話的であるため、Web サービスのインタフェース オプションが必要です。[フォーム] オプションと [呼び出し生成] オプションは、ポートレットの簡素化のために用意されています。選択が終了したら、[次へ] ボタンをクリックします。


     

  12. Portlet Wizard を初めて使用し、現在の一覧に Web サービスが何も表示されていない場合は、[Web サービス] 画面で、[Web サービスの追加...] ボタンをクリックします。Web サービスが一覧に表示されていても、WebLogic Workshop で作成した EvalProduct がそこにない場合は、[リストの編集] ボタンをクリックします。[Web サービス リスト] 画面が表示されます。次のような WSDL URL を入力します。
    http://localhost:7501/workshop/productEvalWSC/EvalProduct.jws?WSDL

    URL は大文字/小文字が区別されます。次の例では、e2eDomain アプリケーション (localhost:7501) の WSDL URL を使用します。入力ボックスに WSDL URL を入力した後、[URL の追加] ボタンをクリックします。Portlet Wizard により URL が確認され、有効であれば、[Web サービス] の一覧に追加されます。[Web サービス リスト] 画面で、[閉じる] ボタンをクリックします。


     

    [Web サービス] 画面に戻り、一覧の EvalProduct Web サービスをクリックします。Portlet Wizard により WSDL URL に接続され、自己記述 Web サービス用に定義した処理が検索されます。この手順の間、進捗画面が表示されます。画面に「操作を取得しました。」のステータス メッセージが表示されたら、[次へ] ボタンをクリックします。


     

  13. [コード プレビュー] 画面に、Portlet Wizard により生成されるコードが表示されます。必要に応じて、Portlet Wizard でコードを編集したり (変更内容は反映されるが検証は行われない)、クリップボードにコードをコピーして普段使用しているエディタに後で貼り付けることもできます。どちらの場合も、作成される Web サービスのインタフェース コードをプレビューした後に、[次へ] ボタンをクリックします。


     

  14. [リソース ファイルの場所] 画面では、次のように、関連付けられている Web アプリケーションの「portlets」ディレクトリの下に、ポートレットの名前を使用したディレクトリが作成されることが表示されます。


     

    作成するポートレット JSP ファイルの場所を指定した後、[次へ] ボタンをクリックします。

  15. [まとめ] 画面では、作成または変更されるファイルの一覧が次のように表示されます。


     

    この例では、weblogic700¥samples¥platform¥e2eDomain¥beaApps というディレクトリの下に、次のファイルが作成されます。

    また、Portlet Wizard は、b2cPortal Web アプリケーションの利用可能なポートレット ([Products] ページではまだ有効になっていない) の一覧を示す次の XML ファイルを更新します。

    処理を続行する場合は、[作成] ボタンをクリックします。Portlet Wizard のプロセスを単に確認したかった場合は、[キャンセル] ボタンをクリックします。

    Portlet Wizard により、次のビルド コマンドが自動的に実行され、Web サービスのインタフェースが生成されます。

    weblogic700¥server¥bin¥ant.bat -f buildfile client-gen.xml

    このコマンドにより、.class、.WSDL を含む JAR ファイルの他、Web サービスのインタフェースで構成されるファイルが作成され、これらのファイルがポートレットで使用できます。また、JAR ファイルには、.java のソース ファイルが含まれます。

ポートレットの初期設定をそのまま使用する場合は、最後の [次のステップ] 画面で編集オプションのチェックを外し、[閉じる] ボタンをクリックします。EBCC を使用してプロジェクトの同期をとる (ポータル定義をサーバに配置す
る) 前、および承認前のポートレットを [Product] ページに表示して利用できるようにする前に、ポートレットの JSP コードおよび関連ファイルを大幅に改良する必要がある場合もあります。次の節では、パッケージ化の相違点について説明します。EBCC のサーバ同期およびポートレットをポータル ページに表示し利用可能にする方法については、
『管理者ガイド』を参照してください。

次のステップ

これで、Portlet Wizard画面を使用して、ポートレットの最初の JSP およびインタフェース (JAR に含まれる .class.wsdl、および .java のファイル) を生成する通常のプロセスを理解することができました。繰り返しますが、インストールされた商品評価ポートレットおよび EvalProd Web サービスで使用されるパッケージ化と変数は、Portlet Wizard を使用して作成したばかりのファイルとは異なります。JAR ファイルを作成した際には、Java ソースを抽出し、ポートレット JSP を大幅に変更し (2 つのインクルード JSP ファイルも追加)、作成したファイルを次のようにデプロイしました。注意: Java ソースには変更を加える必要はありませんでした。単に抽出して、インストールされたサンプル ディレクトリに配置しています。

商品評価ポートレットの JSP ファイル

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp¥b2cPortal ¥portlets¥evaluator¥*.jsp

主要な evaluator.jsp ポートレット ファイル、およびそこに含まれる step1.jsp ファイルと step2.jsp ファイルで、ポートレットを構成するプレゼンテーション グラフィックスを改善し、ポートレットと b2cPortal の Webflow で作業するためのスクリプトレットを追加しました。

WebLogic Workshop ランタイムにより使用される Web サービスのクライアント インタフェース、CLASS ファイル

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp¥b2cPortal¥WEB-INF¥classes¥productEvalWSC¥*.class

Web サービスのクライアント インタフェース、JAVA ファイル

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp¥b2cPortal¥WEB-INF¥src¥productEvalWSC¥*.java

サーバサイドの実装

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eWebServicesApp¥workshop¥productEvalWSC¥*

これらのファイルには、デプロイされた EvalProduct.jws、および WebLogic Workshop 領域からコピーされ、workshop Web アプリケーションの一部としてデプロイされた ProductEvalDBControl.ctrl が含まれます。Workshop Web アプリケーションは、e2eWebServicesApp エンタープライズ アプリケーションの一部としてデプロイされています。当然のことながら、workshop Web アプリケーションには、*.xml ファイルのコンフィグレーション設定を含む WEB-INF サブディレクトリがあります。

クライアント生成タスクにより生成された SOAP 会話、JAVA ファイル

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp¥b2cPortal¥WEB-INF¥src¥org¥openuri¥www¥x2002¥x04¥soap¥conversation

b2cPortal で使用される Payment Web サービスについては、次の節を参照してください。

 


支払認可 Web サービスの定義

Avitek Digital Imaging の B2C ポータルには、チェックアウト プロセスの一部として次のような [注文の送信] ページがあります。


 

ユーザが [注文の送信] ボタンをクリックすると、クレジット カードの支払認可プロセスが CajunBasedPaymentPC という Pipeline コンポーネントにより処理されます。この Pipeline コンポーネントは、Java プロキシを呼び出すことにより Payment Web サービスを呼び出します。Web サービスは、WebLogic Workshop を使用してすでに作成済みです。

Payment Web サービスは、WebLogic Workshop フレームワークの対話的な機能を使用します。最初の呼び出しでクレジット カードを認可します。つまり、認可されるクレジット カード番号と金額を引数として渡します。クレジット カードの認可が終了すると、金額を取得するよう呼び出しが行われます。最後に、金額を決済する要求が行われます。

Payment Web サービスから CajunBasedPaymentPC に返されるコードは次のとおりです。

注意: Payment Web サービスは、サードパーティの支払サービスに接続および承認されている場合のように、常にエラーなく支払い情報を送信するわけではありません。Payment サービスを介した支払処理は、本番環境向けに設計されていません。支払いを正確に処理するには、サードパーティ ベンダの支払いサービスと統合する必要があります。ただし、サンプルの Pipeline コンポーネントで表示されるコードは、エラーを適切に処理するよう設定されています。

CajunBasedPaymentPC Pipeline コンポーネントのロール

WebLogic Workshop の Payment Web サービスの定義を説明する前に、CajunBasedPaymentPC.java Pipeline コンポーネントの各部分を検証します。ソース ファイルは BEA_HOME の下の次のディレクトリにあります。

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp¥src¥examples¥e2e¥b2c¥payment¥pipeline

このサンプルの Pipeline コンポーネントには、次のような import 文が多数含まれています。

import paymentWS.Payment_Impl;
import paymentWS.PaymentSoap;
import examples.e2e.b2c.util.B2CPortalConstants;
import com.bea.p13n.util.debug.Debug;
import org.openuri.www.*;
import org.openuri.www.x2002.x04.soap.conversation.*;
import com.beasys.commerce.axiom.units.Money;
import com.beasys.commerce.ebusiness.shoppingcart.ShoppingCart;

これらの文により、Payment プロキシ、生成された SOAP インタフェース、および支払タイプなどのサンプルの定数値セットのパッケージがインポートされ、アプリケーションが簡素化されます。ShoppingCart EJB もインポートされます。これは、コマース アプリケーション用のショッピング カート データを処理するものです。

b2cPortal アプリケーションにおける CajunBasedPaymentPC Pipeline コンポーネントの機能の一部として、Pipeline セッションから現在のショッピング カート データを受け取ることができます。

CreditCard cc = (CreditCard) getSessionAttribute(PipelineSessionConstants.PAYMENT_CREDIT_CARD, namespace, pipelineSession);
ShoppingCart sc = (ShoppingCart) getSessionAttribute(PipelineSessionConstants.SHOPPING_CART, namespace, pipelineSession);
Money amt = (Money) sc.getTotal();

Web サービスのプロキシを次のようにインスタンス化します。

try {
proxy = new Payment_Impl(connectString +
"/workshop/paymentWS/Payment.jws?WSDL");
if (DEBUG.ON) {
DEBUG.out("proxy instantiated");
}

Web サービスとの会話の準備としてヘッダー オブジェクトを設定した後、まずクレジット カード番号と値 (購入金額) を Pipeline セッションから取得し、会話を開始します。次に、認可データを Payment Web サービスに渡し、サービスにより結果が返されます。このエントリ ポイントでは、指定された金額に対する提供されたカードのクレジットを単に保存します。

Authorize auth = new Authorize(cc.getNumber(), amt.getValue());
long result = proxySoap.authorize(auth, startHeader).getAuthorizeResult() ;

認可メソッドでエラーが返されなかった場合は、取得したデータで処理を続行します。支払トランザクションでは、「取得」という語は、クレジット カード保有者の利用可能なクレジット残高について言及する際に使用します。決済の合計金額は取得金額よりも少なくなる必要があります。

Capture capture = new Capture(amt.getValue());
result = proxySoap.capture(capture, continueHeader).getCaptureResult();

Web サービスから取得結果を受け取った後、決済データを使用して会話を終了します。

Settle settle = new Settle(amt.getValue());
result = proxySoap.settle(settle, continueHeader).getSettleResult();

エラー処理の詳細については、CajunBasedPaymentPC.java のソース ファイルを参照してください。前述のとおり、このファイルは次のディレクトリにあります。

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp¥src
¥examples¥e2e¥b2c¥payment¥pipeline

既存の paymentWS Web サービスの表示

WebLogic Workshop のプロジェクト ツリー ウィンドウで、次のディレクトリにコピーした paymentWS フォルダをダブルクリックします。

weblogic700¥samples¥workshop¥applications¥samples¥paymentWS

この手順をツアーの前の部分で省略している場合は、「プロジェクトの場所について」を参照してから、この節に戻ってください。

展開した paymentWS プロジェクト フォルダ内の Payment.jws という Java Web サービス ファイルをダブルクリックします。次の画面は、この Web サービスの [デザイン ビュー] 画面です。


 

WebLogic Workshop を使用して、Web サービス用の次のメソッドを定義しました。

[デザイン ビュー] 画面を見ると、小さな (s)、(c)、(F) の記号が JWS メソッドに付いていることがわかります。これらの記号は、どのメソッドが Web サービスの会話を開始 (Authorize または AuthorizeAndCapture) し、どのメソッドが会話を続行 (Capture) し、どのメソッドが会話を終了 (Settle) するかを示します。

成功した場合、Web サービス メソッドは一意の transactionID を返します。サンプルでは ID はトランザクションが発生した時間 (ミリ秒) で算出されます。このようにして ID を返すのは、クレジット カード認可アプリケーションでは典型的な方法です。

WebLogic Workshop でのメソッド定義は単純です。このツアーでは、コントロールとメソッドを作成する手順は説明しません。これらの手順は、WebLogic Workshop のドキュメントに記載されています。このドキュメントは、ビジュアルな開発環境で参照できます。また、BEA e-docs Web サイトの WebLogic Workshop のページでも参照できます。

Workshop では、[ソース ビュー] に切り替えて、Web サービス メソッドの定義を表示できます。これらの 4 つのメソッドを追加後、ビジュアルな開発環境に表示するビジネス ロジックを追加する前に、Web サービスに必要なメンバー変数を追加しました。メンバー変数を追加するには、ビジュアルな開発環境の [Payment] の見出しを右クリックし、次のようなプルダウン メニューから [メンバー変数の追加] を選択します。


 

Payment.jws に定義されたメンバー変数は次のとおりです。サフィックスのアンダースコアはインスタンス変数を示します。

支払モデルと定義されたメソッド

クレジット カードのトランザクションには、端末ベースとホストベースの 2 種類の支払モデルがあります。この 2 つの支払モデルの相違点は、トランザクション バッチの保存場所です。ホストベース モデルでは、トランザクション バッチは販売者サイトのローカル システムではなくホスト ネットワーク上に保存されます。通常、決済は 1 日の終わりに発生しますが、販売者は、決済プロセスを起動するために何らかの作業を行う必要がありません。

端末ベース モデルでは、トランザクション バッチは販売者サイトのローカル システム上にデータ ファイルとして保存されます。販売者は、各日の終わりに決済プロセスを起動して、資金を取引銀行の口座に送金する必要があります。

金融機関から割り当てられる端末ベースの支払モデルを次に示します。

割り当てられるホストベースの支払モデルを次に示します。

前述したように、Authorize メソッドは端末ベースの支払モデルで使用されます。このエントリ ポイントでは、クレジット カード番号を検証し、そのカードのクレジットから指定された金額を確保します。検証が終わると、データベース テーブルに新しいエントリが作成されます。このエントリによって、インシデントが記録され、支払モデルに基づく状態が設定されます。トランザクションの金額が顧客のクレジット残高の openToBuy フィールドから差し引かれます。ただし、資金は決済時まで販売者には送金されません。

注意: 端末ベースのプロセッサを使用している販売者は、売上資金が口座に送金される前に、取得と決済の手順を実行する必要があります。この手順は、「Auto Mark/Auto Settle」のプロセッサ コンフィグレーションに応じて、Capture および Settle、またはそのどちらかを呼び出して実行します。

この AuthorizeAndCapture メソッドは、ホストベースの支払モデルで使用されます。このエントリ ポイントでは、クレジット カード番号を検証し、そのカードのクレジットから指定された金額を確保します。検証が終わると、データベース テーブルに新しいエントリが作成されます。このエントリによって、インシデントが記録され、支払モデルに基づく状態が設定されます。トランザクションの金額が顧客のクレジット残高の openToBuy フィールドから差し引かれます。ただし、資金は決済時まで販売者には送金されません。

注意: ホストベースの認可後取得プロセッサを使用している販売者は、売上資金が口座に送金される前に、取得と決済の手順を実行する必要があります。

Payment Web サービスのこの Capture メソッドにより、クレジット カード保有者の利用可能なクレジット残高を確認できます。決済の合計金額は、取得金額よりも少なくなる必要があります。次の Settle メソッドで確認されます。

* @jws:operation
* @jws:conversation phase="finish"
*/
public long Settle(Double amountToSettle)
{
if ((amountToSettle == null) ||
(amountToSettle.compareTo(new Double(0)) < 0))
return ERR_CODE_BAD_ARGUMENT;
if (amountToSettle.compareTo(amountToCapture_) > 0)
return ERR_CODE_AMT_TO_SETTLE_MORE_THAN_CAPTURE;
return transactionID_;
}

ビジュアルな開発環境におけるメソッド定義の詳細については、WebLogic Workshop のドキュメントを参照してください。このドキュメントはビジュアルな開発環境で参照できます。また、BEA e-docs Web サイトの WebLogic Workshop のページでも参照できます。

Payment Web サービスの構築とテスト

cgDomain の WebLogic Server インスタンスが稼動していない場合は、これを起動します。この手順をツアーの前の部分で省略している場合は、サーバの起動オプションを参照してください。その後、この節に戻ってください。

サーバが稼動した状態で、[デバック|ビルド] をクリックします。「ビルドを開始しました。」というメッセージがビジュアルな開発環境の画面の左下隅に表示されます。定義済みの Web サービスの構築が完了すると、WebLogic Workshop はコンパイルした JWS クラスを次のディレクトリに配置します。

weblogic700¥samples¥workshop¥cgServer
¥.jwscompile¥_jwsdir_samples¥classes¥paymentWS¥*.class

サーバを稼動した状態で、[デバック|開始] をクリックします。

テスト ページはブラウザベースです。最初に表示されるタブ付きのページは [Test Form] です。ここでは、[Overview] タブを選択します。次の画面は、blues というリモート マシン上でサーバを稼動している状態の [Overview] ページを示しています。


 

[Test Form] タブを選択します。サンプル データを入力すると、Payment Web サービスをテストできます。たとえば、クレジット カードの番号 0099-8877-6655-4433 (ハイフンはなくても可) および openToBuy の認可金額 10000 を入力できます。このテストには、次のように Authorize メソッドを使用します。


 

会話を開始するには、[Authorize] ボタンをクリックします。この Web サービス メソッドは、成功した場合に、一意の transactionID を返します。この ID は例で示されているとおり、トランザクションの発生した時間 (ミリ秒) で算出されます。


 

テストを続行するには、このページの [Continue this conversation] リンクをクリックします。WebLogic Workshop は、Payment Web サービスに定義されている続きのメソッドの一覧を返します。Capture メソッドの amountToCapture 変数に「1000」を入力します。次に、[Capture] ボタンをクリックします。取得する金額が認可金額よりも少ない場合 (成功した場合)、Web サービスは一意の transactionID を返します。


 

次に、[Continue this conversation] リンクを再度クリックします。Settle メソッドの amountToSettle 変数に「999.95」などの値を入力します。次に、[Settle] ボタンをクリックします。決済する金額が取得金額よりも少ない場合 (成功した場合)、Web サービスは一意の transactionID を返します。


 

[Test Form] では、他の値を入力してエラー処理を確認することができます。

WebLogic Workshop で Web サービスを構築すると、すべての EJB が自動的に生成されるため、開発者が行うアクションや作業は何もないことがわかります。ここでは、最初のアクセスで paymentWS.PaymentEJB.jar ファイルが次のディレクトリに作成されました。

weblogic700¥samples¥workshop¥cgServer
¥.jwscompile¥_jwsdir_samples¥EJB

Web サービスのクラス ファイルは次のディレクトリに作成されます。

weblogic700¥samples¥workshop¥cgServer
¥.jwscompile¥_jwsdir_samples¥classes¥paymentWS¥Payment.class

Web サービスの WSDL の保存

開発プロセス中はいつでも、Web サービスを記述する Web Service Description Language (WSDL) ファイルを WebLogic Server から利用できます。WSDL は、標準の XML ドキュメントで、World Wide Web Consortium (W3C。詳細は http://www.w3.org を参照) により管理されています。

WSDL ファイルは、Web サービスが利用可能なプロトコル、および Web サービスがエクスポーズするすべてのメソッドを記述 (送受信可能な XML メッセージの形で) します。WSDL ファイルは、クライアント アプリケーションが Web サービスを使用するために必要な情報をすべて提供します。

JWS ファイルに対応する WSDL ファイルを入手するには、次のような方法があります。

e2eDomain で使用するための PaymentWS Web サービスのパッケージ化

このツアーでは、Payment Web サービスを構成するファイルを、インストールされた e2eDomain 用に次のようにパッケージ化しています。

WebLogic Workshop ランタイムにより使用される Web サービスのクライアント インタフェース、CLASS ファイル

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp
¥b2cPortal¥WEB-INF¥classes¥paymentWS¥*.class

Web サービスのクライアント インタフェース、JAVA ファイル

weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp
¥src¥paymentWS¥*.java

サーバサイドの実装

weblogic700¥samples¥platform¥e2eDomain¥beaApps
¥e2eWebServicesApp¥workshop¥paymentWS¥Payment.jws

これは、WebLogic Workshop 領域からコピーされ、workshop Web アプリケーション (e2eWebServicesApp のエンタープライズ アプリケーションの一部としてデプロイされた) の一部としてデプロイされた Payment.jws ファイルです。当然のことながら、workshop Web アプリケーションには、*.xml ファイルのコンフィグレーション設定を含む WEB-INF サブディレクトリがあります。

paymentWS Web サービスにより使用される EJB の JAR ファイル

weblogic700¥samples¥platform¥e2eDomain¥e2eServer
¥.jwscompile¥_jwsdir_workshop¥EJB¥paymentWS.PaymentEJB.jar

支払処理のための Webflow 入力プロセッサ、CLASS ファイル

weblogic700¥samples¥platform¥e2eDomain¥beaApps
¥e2eApp¥b2cPortal¥WEB-INF¥classes¥examples¥e2e
¥b2c¥payment¥webflow¥*IP.class

Web サービス ツアーの完了

これで、Web サービス ツアーは終了です。オンライン ツアーの場合は、[概要に戻る] ボタンをクリックして、サンプルの [はじめに] ページに戻ってください。

 

ページの先頭 前 次