例:java実装webサービス
2272 ワード
最初のウェブサービスの例はSOAPに基づいている.
サービスエンドポイントインタフェース(SEI)とサービス実装Bean(SIB)
Webサービスをコンパイル、実行、および呼び出すすべての関連ライブラリファイルは、JAX-WSをサポートするJava SE 6に含まれます.JAX-WSはSOAPプロトコルとRESTスタイルベースのウェブサービスタイプを同時にサポートしています.SOAPベースのJava Webサービスは、個別のJavaクラスのみで実現できますが、ベストプラクティスの原則に従って、まず、Webサービスが完了または実現する必要があるビジネス・メソッドを宣言するJavaインタフェース・クラスを定義する必要があります.通常、このようなインタフェースは「SEI」、すなわちサービスエンドポイントインタフェースと呼ばれる.これに対応する実装クラスは「SIB」、すなわちサービス実装Beanと呼ばれる.注:JAX-WSはJava標準版6.0とともにリリースされ、現在JAX-WSはかなり成熟しています.
次の例を見てみましょう.このサービスは、現在のシステム時間を文字列として呼び出し元に返します.例:
サービスエンドポイントインタフェースの定義:
サービス実装Bean:
Java Webサービスとして公開:
パブリケーション・プログラムを実行すると、ブラウザで先ほど導入したWebサービスをテストできます.パブリケーション・プログラムによって自動的に生成されるサービス契約、すなわちWSDLドキュメントが表示されます.ブラウザに入力:http://127.0.0.1:9876/ts?wsdlWSDLドキュメントを開くことができます.
WSDLドキュメントは、Webサービスを作成、実行するクライアント・プログラムにとって多くの助けになります.開発言語によっては、WSDLドキュメントからクライアント開発関連サポートコードを直接生成するツールパッケージが一般的に提供されます.Javaが提供するツールプログラムは、wsimportと呼ばれ、以前はwsdl 2 javaとjava 2 wsdlと呼ばれていました.実行時に、クライアントは、WSDLドキュメントを使用して、呼び出されたサービス操作に関連付けられたキーデータ型情報を取得できます.例えば、クライアントは、gettimeAsElapsedが返すデータ型が整数であり、パラレル入力を必要としないことを、前の例で生成したWSDLドキュメントによって判断することができる.
WSDLは、linuxでcurlを使用するなど、他のツールプログラムからアクセスすることもできます.次のコマンドを実行します:%curlhttp://localhost:9876/ts?wsdlを選択しても、生のWSDLドキュメントを表示できます.
サービスエンドポイントインタフェース(SEI)とサービス実装Bean(SIB)
Webサービスをコンパイル、実行、および呼び出すすべての関連ライブラリファイルは、JAX-WSをサポートするJava SE 6に含まれます.JAX-WSはSOAPプロトコルとRESTスタイルベースのウェブサービスタイプを同時にサポートしています.SOAPベースのJava Webサービスは、個別のJavaクラスのみで実現できますが、ベストプラクティスの原則に従って、まず、Webサービスが完了または実現する必要があるビジネス・メソッドを宣言するJavaインタフェース・クラスを定義する必要があります.通常、このようなインタフェースは「SEI」、すなわちサービスエンドポイントインタフェースと呼ばれる.これに対応する実装クラスは「SIB」、すなわちサービス実装Beanと呼ばれる.注:JAX-WSはJava標準版6.0とともにリリースされ、現在JAX-WSはかなり成熟しています.
次の例を見てみましょう.このサービスは、現在のシステム時間を文字列として呼び出し元に返します.例:
サービスエンドポイントインタフェースの定義:
package ch01.ts;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
/**
* (SEI)
* @author fuhd
*/
@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
@WebMethod String getTimeAsString();
@WebMethod long getTimeAsElased();
}
サービス実装Bean:
package ch01.ts;
import java.util.Date;
import javax.jws.WebService;
/**
* Bean(SIB)
* @author fuhd
*/
@WebService(endpointInterface = "ch01.ts.TimeServer")
public class TimeServerImpl implements TimeServer {
@Override
public String getTimeAsString() {
return new Date().toString();
}
@Override
public long getTimeAsElased() {
return new Date().getTime();
}
}
Java Webサービスとして公開:
package ch01.ts;
import javax.xml.ws.Endpoint;
/**
*
* @author fuhd
*/
public class TimeServerPublisher {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9876/ts", new TimeServerImpl());
}
}
パブリケーション・プログラムを実行すると、ブラウザで先ほど導入したWebサービスをテストできます.パブリケーション・プログラムによって自動的に生成されるサービス契約、すなわちWSDLドキュメントが表示されます.ブラウザに入力:http://127.0.0.1:9876/ts?wsdlWSDLドキュメントを開くことができます.
WSDLドキュメントは、Webサービスを作成、実行するクライアント・プログラムにとって多くの助けになります.開発言語によっては、WSDLドキュメントからクライアント開発関連サポートコードを直接生成するツールパッケージが一般的に提供されます.Javaが提供するツールプログラムは、wsimportと呼ばれ、以前はwsdl 2 javaとjava 2 wsdlと呼ばれていました.実行時に、クライアントは、WSDLドキュメントを使用して、呼び出されたサービス操作に関連付けられたキーデータ型情報を取得できます.例えば、クライアントは、gettimeAsElapsedが返すデータ型が整数であり、パラレル入力を必要としないことを、前の例で生成したWSDLドキュメントによって判断することができる.
WSDLは、linuxでcurlを使用するなど、他のツールプログラムからアクセスすることもできます.次のコマンドを実行します:%curlhttp://localhost:9876/ts?wsdlを選択しても、生のWSDLドキュメントを表示できます.