BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs >
WebLogic Platform >
アプリケーション ツアー > Web サービス ツアー |
WebLogic Platform サンプル
|
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 のビジュアルな開発環境を起動することです。この節では、サポート対象プラットフォーム Microsoft Windows および UNIX での起動方法を説明します。
サポート対象プラットフォームについては、BEA e-docs Web サイトの「サポート対象プラットフォーム」ページを参照してください。
Microsoft Windows の [スタート] メニューから WebLogic Workshop を起動するには、次の順に選択します。
[プログラム|BEA WebLogic Platform 7.0|WebLogic Workshop|WebLogic Workshop]
UNIX で WebLogic Workshop を起動するには、次の手順を実行します。
sh 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 を起動する場合は、新しいプロジェクトを作成するか、または新しいプロジェクトを開くよう求められます。その場合には、次の手順を実行します。
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 サービスを実行し、テストします。 ここでは、プロジェクトの場所についてでの説明に従って、paymentWS および productEvalWSC の 2 つのフォルダを Platform の samples 領域から Workshop の samples 領域にコピーしていることを前提としています。 Web サービスを実行し、テストするには、次の手順を実行します。
weblogic700¥samples¥workshop¥applications¥samples
サーバが起動すると、画面の下に [サーバが実行中です。] ステータスが表示されます。
注意: WebLogic Workshop で作成し、cgDomain 以外のドメインにすでにデプロイしている Web サービスをテストすることができます。たとえば、e2eDomain には、次のディレクトリにデプロイされた paymentWS と productEvalWSC の 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 です。 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 ファイルは次のようなコントロールを表すことができます。
/**
* @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;
WebLogic Workshop フレームワーク
Web サービスのビジネス ロジックをすべて含む JWS ファイルが作成されると、WebLogic Workshop フレームワークにより、JWS ファイルを実行するために必要な標準の EJB コードが生成されます。WebLogic Workshop フレームワークは、注釈を使用して、エンタープライズクラスの Web サービスを構築するため特別に設計された機能をエクスポーズします。WebLogic Workshop フレームワークにより次のことを実行できます。
WebLogic Workshop フレームワークは、非同期メッセージの相関関係の管理、および会話でやりとりされるメッセージの状態管理を自動的に行います。つまり、ユーザは、メソッドに開始、終了、会話の継続といういずれかのマークを付けるだけで、残りの作業はフレームワークが実行します。会話を識別するための一意の ID が自動的に生成され、Web サービスで定義されているあらゆる状態 (クラスのメンバー変数) がエンティティ Java beans により一貫して管理されます。
WebLogic Workshop フレームワークは、単純な宣言的 XML マップを使用して、内部 Java コード、および Web サービス間で交換される XML メッセージをマップします。ユーザは使用するメソッドの構造を示し、XML フィールドを Java 変数に関連付けます。
高い負荷での可用性を確保するため、Web サービスはメッセージ バッファを利用します。ユーザはメソッドにバッファが必要であるとマークを付けます。WebLogic Workshop フレームワークによりキューが作成され、Web サービスに書き込まれます。これにより、高度な J2EE 機能に 1 回のクリックでアクセスできます。
WebLogic Workshop フレームワークは、JWS が使用するあらゆるコントロールの実装をインスタンス化します。また、WebLogic Workshop フレームワークは、単純なネーミング規則を使用して、あらゆる非同期コールバックを関連付けます。
Web サービスの開発プロセスの概要
ツアーのこの部分では、Web サービスを構築するための基本手順を簡単に説明します。それぞれの基本手順の詳細については、WebLogic Workshop のオンライン ドキュメントを参照してください。チュートリアルから開始するのが最適です。チュートリアルは、トップレベル メニューから [ヘルプ|チュートリア
ル] をクリックすると、ビジュアルな開発環境で使用できます。または、BEA e-docs Web サイトの WebLogic Workshop のページでチュートリアルを開始して参照することもできます。「チュートリアル : 初めての 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 フォルダをダブルクリックします。 この手順をツアーの前の部分で省略している場合は、プロジェクトの場所についてを参照してください。その後、このページに戻ってください。 展開した productEvalWSC プロジェクト フォルダ内の EvalProduct.jws という Java Web サービス ファイルをダブルクリックします。次の画面は、この Web サービスの [デザイン ビュー] 画面です。
weblogic700¥samples¥workshop¥applications¥samples¥productEvalWSC
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 では、 EvalProduct.jws、つまり productEvalWSC の JWS に定義したメソッドのコードを WebLogic Workshop で参照することができます。ビジュアルな開発環境におけるメソッド定義の詳細については、WebLogic Workshop のドキュメントを参照してください。ドキュメントはビジュアルな開発環境で参照できます。また、BEA e-docs Web サイトの WebLogic Workshop のページでも参照できます。 productEvalWSC Web サービスの構築とテスト cgDomain の WebLogic Server インスタンスが稼動していない場合は、これを起動します。この手順をツアーの前の部分で省略している場合は、サーバの起動オプションを参照してください。その後、この節に戻ってください。 サーバが稼動している場合は、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");
}
}
サーバが稼動した状態で、[デバック|ビルド] をクリックします。定義済みの Web サービスの構築が完了すると、WebLogic Workshop はコンパイルした JWS クラスを次のディレクトリに配置します。 サーバを稼動した状態で、[デバック|開始] をクリックします。 テスト ページはブラウザベースです。最初に表示されるタブ付きのページは [Test Form] です。ここでは、[Overview] タブを選択します。次の画面は、blues というリモート マシン上でサーバを稼動している状態の [Overview] ページを示しています。
weblogic700¥samples¥workshop¥cgServer¥.jwscompile¥_jwsdir_samples
¥classes¥productEvalWSC¥*.class
[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 ファイルが次のディレクトリに作成されます。 Web サービスのクラス ファイルは次のディレクトリに作成されます。 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 ファイルを入手するには、次のような方法があります。
weblogic700¥samples¥workshop¥cgServer¥.jwscompile¥_jwsdir_samples¥EJB
weblogic700¥samples¥workshop¥cgServer¥.jwscompile¥_jwsdir_samples¥classes¥productEvalWSC¥*.class
http://blues:7001/samples/productEvalWSC/EvalProduct.jws?WSDL
ブラウザの [ファイル|名前を付けて保存] 機能を使用して、WSDL ファイルを自分のローカル マシンに保存します。ブラウザによっては、保存したファイルの先頭および最後に HTML タグが含まれます。有効な WSDL ファイルを作成するには、これらのタグを削除する必要があります。必ず .wsdl のファイル タイプを指定してください。<WebServiceName>Contract.wsdl のネーミング規則に従って名前を付けることをお勧めします。たとえば、EvalProductContract.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 で起動するには、[スタート] メニューから次のようにクリックします。
weblogic700¥samples¥platform¥e2eDomain¥beaApps¥e2eApp-project
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 サービス用に定義した処理が検索されます。この手順の間、進捗画面が表示されます。画面に「操作を取得しました。」のステータス メッセージが表示されたら、[次へ] ボタンをクリックします。
処理を続行する場合は、[作成] ボタンをクリックします。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 日の終わりに発生しますが、販売者は、決済プロセスを起動するために何らかの作業を行う必要がありません。
端末ベース モデルでは、トランザクション バッチは販売者サイトのローカル システム上にデータ ファイルとして保存されます。販売者は、各日の終わりに決済プロセスを起動して、資金を取引銀行の口座に送金する必要があります。
金融機関から割り当てられる端末ベースの支払モデルを次に示します。
この支払モデルは、非耐久消費財に使用されます。決済は認可が完了すると直ちに行われます。これは、非耐久消費財は購入時点ですぐに出荷されることが一般的であるためです。
この支払モデルは、商品が認可の時点で出荷されたが、販売者が資金をその日ではなく後で送金する場合に使用します。
この支払モデルは、商品を出荷したことを販売者が指定でき、その時点で決済を自動的に行うものです。
これは、最も柔軟な支払モデルで、商品の出荷時期と資金の送金時期を販売者が指定できるものです。マーク プロセスにより、販売者は商品が出荷されたことを指定します。決済プロセスにより、販売者は資金の送金を指定します。
割り当てられるホストベースの支払モデルを次に示します。
この支払モデルは、サービス、デジタル商品の販売、または受注後 24 時間以内に出荷される有形商品に使用されます。この場合、販売者は購入金額の認可のみを受け取る必要があります。バッチへの認可の取得とトランザクションの決済は、認可時に販売者に代わってプロセッサにより実行されます。
受注後、注文を処理するまでに 2 日以上かかる場合、販売者は、認可とトランザクションの取得を別々に行う必要があります。この支払モデルでは、顧客が購入を決めた時点で認可が実行されます。取得は、販売者が注文を出荷する際に実行されます。プロセッサは、その日の指定された時刻にバッチ処理されたトランザクションを決済します。
前述したように、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 ファイルが次のディレクトリに作成されました。 Web サービスのクラス ファイルは次のディレクトリに作成されます。 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 ファイルを入手するには、次のような方法があります。
weblogic700¥samples¥workshop¥cgServer
¥.jwscompile¥_jwsdir_samples¥EJBweblogic700¥samples¥workshop¥cgServer
¥.jwscompile¥_jwsdir_samples¥classes¥paymentWS¥Payment.class
http://blues:7001/samples/paymentWS/Payment.jws?WSDL
ブラウザの [ファイル|名前を付けて保存] 機能を使用して、WSDL ファイルを自分のローカル マシンに保存します。ブラウザによっては、保存したファイルの先頭および最後に HTML タグが含まれます。有効な WSDL ファイルを作成するには、これらのタグを削除する必要があります。必ず .wsdl のファイル タイプを指定してください。<WebServiceName>Contract.wsdl のネーミング規則に従って名前を付けることをお勧めします。たとえば、PaymentContract.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 サービス ツアーは終了です。オンライン ツアーの場合は、[概要に戻る] ボタンをクリックして、サンプルの [はじめに] ページに戻ってください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |