GlassFish v3 で WebService NetBeans6.5 を使って簡単 Web サービスアプリケーションの作成
前回は、 GlassFish v3-Prelude についてのご紹介をしました。今回は、以前予告しておりました、 GlassFish v3-Prelude 上にて、 Web サービスをデプロイして実行する方法について、解説して行きたいと思います。 Web サービスアプリケーションの作成には、 NetBeans6.5 と Web アプリケーションプラグイン、及び、 Web サービスプラグインを利用します。予めご自信の環境にインストールされているか、ご確認ください。因みに GlassFish v3-Prelude のインストールについてはこちら、 NetBeans6.5 のインストールに関しては、こちらを参考にして下さい。又、今回は JAX-WS のサービススタックを利用するため、 GlassFish v3-Prelude 側に、 metro の Add On をインストールしておく必要があります。 GlassFish v3-Prelude の管理画面左下の、"更新ツール"をクリックし、メインウィンドウにて "metro" をチェックしインストールをクリックしてください。インストール後は、 asadmin stop-domain コマンドを発行し、一旦ドメインを停止して下さい。
それでは 早速 NetBeans6.5 を立ち上げて、プロジェクトを作成していきましょう!
"ファイル"→"新規プロジェクト"の順にクリックし、"新規プロジェクト"作成ウィンドウを開きます。ウィンドウを開いたら、左側ペインの "Java Web" 、右側ペインの "Web アプリケーション"をドラッグして、"次へ"をクリックします。

次の画面では、プロジェクト名を入力して"次へ"をクリックします。

次の画面では、配備先のアプリケーションサーバーを指定します。ここに何も表示されていなければ、"追加"をクリックして追加します。アプリケーションサーバーを指定し終えたら"次へ"をクリックします。

次の画面では、この Web アプリケーションで利用するフレームワークの設定画面が表示されますが、今回は特にフレームワークは使用しないので、このまま"完了"をクリックします。

プロジェクト作成が完了し、ソースパッケージを作成したあと、ソースパッケージをドラッグして"新規"→ "Web サービス"の順にクリックし、新規ファイル作成画面を表示させ、ファイル名を入力して"完了"をクリックします。

作成画面を閉じるとエディターウィンドウにソースファイルが開かれます。
表示されたソースコードのクラス宣言内にて右クリックし、"Web サービス"→"オペレーションの追加"の順にクリックし、公開するメソッドの作成画面を表示します。
以下の画面にて、"名前"、"戻り値型"、"パラメータ"等、必要となる情報を入力したら、"了解"をクリックします。

クリック後、エディターウィンドウに戻ると、以下のようなソースコードが展開されています。ここに、内部で処理するロジックを記述していきます。
/**
* Web service operation
*/
@WebMethod(operationName = "calculationResult")
public String calculationResult(@WebParam(name = "number1")
final String number1, @WebParam(name = "number2")
final String number2, @WebParam(name = "operator")
final String operator) {
//TODO 実装コードをここに記述します:
return null;
}
※因みに今回は、クライアントから送信された、四則演算子と数値を元に、計算した結果を返すサービスを作成しました。
コードを記述し終えたら、早速構築し、 GlassFish v3-Prelude 上へ配備します。
まずは Web アプリケーションの構築から。該当のプロジェクトを右クリック→"構築"の順にクリックし、構築を開始します。

正常に Web アプリケーションの作成が完了すると、ウィンドウ右下の"出力"のところに"構築成功"と表示されます。
次に、作成された Web アプリケーションを GlassFish へ配備します。該当のプロジェクトを右クリック→"配備"の順にクリックし、配備を開始します。
GlassFish が起動されて、配備が開始され、 GlassFish server.log に、以下のメッセージが出力されていれば、配備は完了です。
情報: Deployment of sparrow-web-service done is 2200 ms
配備が完了したら、今度は wsdl ファイルと xsd ファイルが生成されるか確認しましょう。それぞれ以下の URL へアクセスし、 xml ファイルが表示されるか確認します。
wsdl ファイルの URL
http://localhost:8080/sparrow-web-service/PortRoyalService?wsdl

xsd ファイルの URL
http://localhost:8080/sparrow-web-service/PortRoyalService?xsd=1

Web サービスを提供するサーバー側の準備はこれで整いました。
次に、 GlassFish が起動されたままの状態で、 Web サービスの提供を受ける側のクライアントアプリケーションを作成して行きます。
まず最初に、サーバ側と同じように、プロジェクトを作成し、 Web サービスクライアントを生成します。
プロジェクトを作成したら、"ファイル"→"新規ファイル"をクリックし、新規ファイル作成画面を表示します。

左側のペインは、 "Web サービス"、右側のペインは "Web サービスクライアント"をドラッグして"次へ"をクリックします。

WSDL およびクライアントの場所を指定する画面が表示されたら、"参照"をクリックします。

Web サービスを参照画面では、先ほど作ったサーバー側のプロジェクトが表示されます。プロジェクトのツリーを展開し、今回作成した公開サービスの "PortRoyal" をドラッグして"了解"をクリックします。

WSDL およびクライアントの場所を指定する画面が表示されます。今回のクライアントスタイルには、 JAX-WS スタイルを採用するので、そのまま完了をクリックします。

しばらくすると、 wsdl への parsing が完了し、"構築成功"が表示されます。ここで一旦サーバーを停止させます。以下の画面にあるように、生成された wsdl ファイルを xsd ファイルをサーバ側のプロジェクトディレクトリ配下にある "Web ページ/WEB-INF/wsdl" 配下にコピーします。

次に、 Web サービスクライアントのコードを実装していきます。実装する対象のソースファイルを開き、実装する位置にカーソルを合わせて右クリック→ "Web サービスクライアントのリソース"→ "Web サービスオペレーションを呼び出す"をクリックして、呼び出すオペレーションを選択するダイアログを表示し、該当するオペレーションをドラッグして"了解"をクリックし、 Web サービスのクライアントコードを挿入します。今回は、 jsp からサービスへアクセスするように実装しました。

展開されたコードは以下のとおりです。
<%-- start web service invocation --%>
<%
try {
jp.glassfish.sparrow.webservice.server.PortRoyalService service = new jp.glassfish.sparrow.webservice.server.PortRoyalService();
jp.glassfish.sparrow.webservice.server.PortRoyal port = service.getPortRoyalPort();
// TODO initialize WS operation arguments here
java.lang.String number1 = "";
java.lang.String number2 = "";
java.lang.String operator = "";
// TODO process result here
java.lang.String result = port.calculationResult(number1, number2, operator);
out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
<%-- end web service invocation --%>
ここに内部処理を記述し、サーバー側のプロジェクトで行った手順と同じように、 GlassFish へ構築して配備します。
又、サーバー側のアプリケーションにも、 wsdl ファイルと、 xsd ファイルを追加しているので、同時に構築及び配備を行います。
配備まで正常に完了したら、早速動かしてみましょう。
因みに今回私が作成したサンプルアプリケーションは、画面から入力された値と、指定された四則演算子をサービスへメッセージ送信し、サービス側では入力された値を元に、計算結果を返信するサンプルを作成しました。
実行結果は以下スクリーンキャストのとおり
http://localhost:8080/sparrow-web-client/ へアクセス

Number1 と Number2 へ、数値を入力し、実行したい四則演算子を選択して "execute" をクリック。

実行結果

如何でしたでしょうか? Web サービスアプリケーションの公開、関連する xml ファイルとクライアントアプリケーションの生成、実際にユーザーがアクセスするクライアント画面の作成までの一連の操作が、とても簡単にできてしまうこと、お分かりいただけましたでしょうか?
この機会に、是非 GlassFish v3-Prelude と、 NetBeans6.5 を組み合わせた Web サービスアプリケーションの作成を、試してみて欲しく思います。
因みに今回作成したサンプルアプリケーションは、以下の URL にて取得できます。
http://www7.atpages.jp/torutuga/downloads/WebServiceSample.zip
次回は、「GlassFish v3-Prelude で、 XA を使うには?」をお届けします。
-------------------------------------------------<広告>-------------------------------------------------
![[写真]](http://image.books.rakuten.co.jp/books/img/common/head/head_rblogo.gif)
Java expert(#03)
ワンランク上のJavaエンジニアを目指せ!
![]()
Comments
Pingback from jacksparrow » GlassFish v3-Prelude で、 XA を使うには?
Date: 2008 年 12 月 9 日, 12:30 AM
[...] 前回は GlassFish v3-Prelude 上に、 Web サービスアプリケーションを作成して配備することについて、執筆させていただきましたが、今回は、 GlassFish v3-Prelude 上で、 XA トランザクションを利 [...]
Pingback from jacksparrow » GlassFish v3 で WebService NetBeans6.5 を使って簡単 Web サービスアプリケーションの作成 その2
Date: 2009 年 1 月 8 日, 1:37 AM
[...] 前回は、JAX-WS の Web Service Stack "Metro" を使って、 NetBeans6.5 で GlassFish v3-Prelude 上に、単純メッセージ送受信をする Web Service Application を作成しました。 今回は、その同じ "Metro" を使って、 [...]
Pingback from jacksparrow » Metro の翻訳を始めました!
Date: 2009 年 1 月 26 日, 4:13 PM
[...] つ(GlassFish v3 で WebService NetBeans6.5 を使って簡単 Web サービスアプリケーション



Write a comment