ページの先頭行へ戻る
Interstage Studio Java EEワークベンチユーザーズガイド

5.1.1 Webサービスとは

Webサービスは、ネットワークを通じてシステムの機能をサービスとして公開する技術で、既存システムの有効活用やソフトウェアの再利用を促進する方法として注目を集めています。
これらを実現するために、Webサービスは、HTTPを下位プロトコルに利用するSOAPを使用して通信を行い、公開するサービスのインタフェースはWSDLで定義することが標準となっています。
また、Webサービスは相互接続性が重要であり、制約や、Webサービスで使用する仕様(SOAP/WSDL/UDDIなど)のあいまいな点の明確化などが、WS-I Basic Profileに規定されています。

実際にWebサービスを提供するには、以下の規約に基づいてサービスエンドポイントインタフェースを決定し、サービスエンドポイントを提供します。

ポイント

開発方法には、サービスエンドポイントインタフェースをWSDLで設計するトップダウン開発と、サービスエンドポイントとなるJavaクラスを作成し、その結果としてサービスエンドポイントインタフェースが決定するボトムアップ開発があります。

J2EE1.4からの変更点

J2EE1.4のWebサービスとJava EEのWebサービスでは以下の点で仕様が異なります。

以下に、Webサービス開発時に使用する主なアノテーションについて、簡単な例を示しながらJava EEでのWebサービスについて紹介します。

javax.jws.WebServiceアノテーション

クラスをWebサービスとして定義するアノテーションです。以下のプロパティを指定できます。

プロパティ名

解説

endpointInterface

クラスのメソッドをすべて公開したくないような場合にサービスエンドポイントインタフェースを定義し、それを宣言するために使用します。

name

WSDLのportTypeの名前

portName

WSDLのportの名前

serviceName

WSDLのサービスの名前

targetNamespace

WSDLの名前空間

wsdlLocation

定義済みのWSDLに基づいてWebサービスを公開する場合に使用します。

WebServiceアノテーション使用したWebサービスの作成例

package sample;

import javax.jws.WebService;

@WebService(endpointInterface="sample.Calc")
public class CalcImpl implements Calc {
      public int add(int param1,int param2) {
            return param1 + param2;
      }
}

javax.xml.ws.WebServiceRefアノテーション

Webサービスを呼び出す場合に、Dependency Injectionするためのアノテーションです。以下のプロパティを指定できます。

プロパティ名

解説

mappedName

マッピングされるリソース名

name

JNDI名

type

リソースのJava型

value

サービスクラス

通常は、javax.xml.ws.Serviceを継承します。

wsdlLocation

WSDLの位置を指定します。

WebServiceRefアノテーションを使用したWebサービスクライアントの作成例

@WebServiceRef(name="service/Calc")
private CalcService service;

public int callCalc(int param1,int param2) {
      Calc port = service.getCalcPort();
      	return port.add(param1,param2);
}