Java API for XML Web Services (JAX-WS)、JSR 224 は、Java EE 5 および EE 6 プラットフォームの重要な部分です。JAX-RPC (Java API for XML-based RPC 1.1) の追加リリースである JAX-WS は、Java テクノロジを使用した Web サービスの開発作業を簡素化します。SOAP 1.1、SOAP 1.2、XML など複数のプロトコルのサポート、および HTTP 以外のプロトコルもサポートできる機能を備えることにより、JAX-RPC 1.1 の問題の一部に対処しています。JAX-WS はデータ結合に JAXB 2.0 を使用し、生成したサービス終了点インタフェースのカスタマイズをサポートしています。注釈がサポートされているため、JAX-WS では Web サービス開発が簡素化され、実行時の JAR ファイルのサイズが小さくなっています。
このドキュメントでは、IDE を使用した JAX-WS Web サービス開発の基本を示します。Web サービスを作成したら、ネットワーク経由で Web サービスを使用する (Web サービスを「消費する」とも呼ばれる)、3 つの異なる Web サービスクライアントを記述します。3 つのクライアントとは、Java SE アプリケーションの Java クラス、サーブレット、および Web アプリケーションの JSP ページです。クライアントに焦点を当てた、さらに詳細なチュートリアルは、「JAX-WS Web サービスクライアントの開発」です。
重要: Java EE 6 プロジェクトには、Tomcat 7.x、GlassFish Server 3.x、または Oracle WebLogic Server 12c が必要です。
Web サービスの作成
この課題の目標は、使用予定の配備コンテナに適したプロジェクトを作成することです。プロジェクトが完成したら、その中に Web サービスを作成します。
コンテナの選択
Web サービスは Web コンテナまたは EJB コンテナに配備できます。これは、選択する実装によって変わります。Java EE 6 アプリケーションを作成している場合、EJB を直接 Web アプリケーションに配置できるため、どのような場合でも Web コンテナを使用します。たとえば Tomcat Web サーバーに配備する予定の場合、Tomcat Web サーバーには Web コンテナしかないため、EJB モジュールではなく Web アプリケーションを作成します。
Web サービスに CalculatorWS という名前を付け、「パッケージ」に「org.me.calculator」と入力します。「Web サービスを新規に作成」を選択したままにします。
Java EE 6 プロジェクトを作成する場合は、「ステートレスセッション Bean として Web サービスを実装」を選択します。
「完了」をクリックします。「プロジェクト」ウィンドウに新しい Web サービスの構造が表示され、エディタ領域にソースコードが表示されます。
Web サービスへのオペレーションの追加
この課題の目的は、クライアントから受け取った 2 つの数字を追加するオペレーションを Web サービスに追加することです。NetBeans IDE は、操作を Web サービスに追加するダイアログを提供します。このダイアログは、Web サービスビジュアルデザイナまたは Web サービスコンテキストメニューのいずれかから開くことができます。
警告: ビジュアルデザイナは Maven プロジェクトでは使用できません。
Web サービスに操作を追加するには、次の手順に従います。
次のいずれか:
エディタの「デザイン」ビューに切り替えます。
または:
「プロジェクト」ウィンドウから Web サービスのノードを見つけます。そのノードを右クリックします。コンテキストメニューが開きます。
@WebMethod
public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
int k = i + j;
return k;
}
前出のコードからわかるように、この Web サービスは単に 2 つの数字を受け取り、合計を返すだけです。次の節では IDE でこの Web サービスをテストします。
Web サービスの配備およびテスト
Web サービスをサーバーに配備したあと、サーバーにテストクライアントがある場合は IDE を使用してサーバーのテストクライアントを開くことができます。GlassFish サーバーと WebLogic サーバーにはテストクライアントがあります。Tomcat Web Server を使用している場合、テストクライアントはありませんが、Web サービスが配備されたことを示すページを IDE で開くことができます。EJB モジュールが正常に配備されて現在使用可能かどうかをテストする機能はありません。
サーバーへ正常に配備されていることをテストするには、次の手順に従います。
プロジェクトを右クリックし、「配備」を選択します。アプリケーションサーバーが開始され、アプリケーションが構築されて、サーバーに配備されます。これらのオペレーションの進行状況は、「出力」ビューの「CalculatorWSApplication (run-deploy)」および「GlassFish Server 3」タブまたは「Tomcat」タブで確認できます。
IDE の「プロジェクト」タブで、CalculatorWSApplication プロジェクトの「Web サービス」ノードを展開します。「CalculatorWS」ノードを右クリックし、「Web サービスをテスト」を選択します。
GlassFish サーバーに Web アプリケーションを配備した場合、テスターページがブラウザで開きます。Tomcat Web サーバーの場合および EJB モジュールを配備している場合、状況は異なります。
GlassFish サーバーに配備した場合、次のようにテスターページに 2 つの数字を入力します。
2 つの数字の合計が次のように表示されます。
Tomcat Web サーバーに配備した場合、次の画面が表示されます。これは Web ページが正常に配備できたことを示しています。
「ファイル」>「新規プロジェクト」(Linux および Windows の場合は Ctrl-Shift-N、MacOS の場合は ⌘-Shift-N) を選択し、「サンプル」>「Java Web サービス」>「カリキュレータ (Java EE 6)」を選択することによって、EE6 バージョンの完全なカリキュレータサービスを開くことができます。
作成した Web サービスの配備が完了したので、次は Web サービスの add メソッドを使用するクライアントを作成する必要があります。ここでは、Java SE アプリケーションの Java クラス、サーブレット、および Web アプリケーションの JSP ページという 3 つのクライアントを作成します。
public static void main(String[] args) {
// TODO アプリケーションロジックをここにコーディング
}
private static int add(int i, int j) {
org.me.calculator.CalculatorWS_Service service = new org.me.calculator.CalculatorWS_Service();
org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
return port.add(i, j);
}
<%
try {
org.me.calculator.CalculatorWSService service =
new org.me.calculator.CalculatorWSService();
org.me.calculator.CalculatorWS port =
service.getCalculatorWSPort();
// TODO initialize WS operation arguments here
int i = 0;
int j = 0;
// TODO process result here
int result = port.add(i, j);
out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
i および j の値を 0 から 3 や 4 などの整数に変更します。catch ブロック内のコメントアウトされた TODO 行を out.println("exception" + ex); に置き換えます。