Webサービスは、ネットワークを通じてシステムの機能をサービスとして公開する技術で、既存システムの有効活用やソフトウェアの再利用を促進する方法として注目を集めています。
これらを実現するために、Webサービスは、HTTPを下位プロトコルに利用するSOAPを使用して通信を行い、公開するサービスのインタフェースはWSDLで定義することが標準となっています。
また、Webサービスは相互接続性が重要であり、制約や、Webサービスで使用する仕様(SOAP/WSDL/UDDIなど)の曖昧な点の明確化などが、WS-I Basic Profileに規定されています。
実際にWebサービスを提供するには、以下の規約に基づいてサービスエンドポイントインタフェースを決定し、サービスエンドポイントを提供します。
SOAP
ネットワーク経由でオブジェクト間通信を行うプロトコルです。XMLを用いて記述するデータ構造が既定されていますが、データを転送するプロトコルは既定されておらず、HTTPやSMTPなど様々なプロトコルにのせることができます。ただし、一般的には、HTTPを利用することが多いようです。
JAX-WS
アプリケーションのリモート呼び出し(Remote Procedure Call)をJavaで実現するために規定されたJAX-RPCの後継です。Webサービスで公開する機能をJavaで記述する場合には、この規約の範囲内で作成します。
WS-I Basic Profile 1.1
相互接続性向上の観点からWebサービスの標準であるSOAP/WSDL/UDDIなどの仕様について詳細化・制約付加を規定した規約です。ワークベンチでWebサービスアプリケーションを作成する過程において、通常は規約の中身について意識する必要はありません。WSDLを直接作成して公開するような場合は、規約を意識する必要があります。
WS-I Attachments Profile 1.0
添付ファイルを利用したときにWebサービスの相互接続性向上のため、SOAP Messages with Attachmentsをベースにして、SOAPやWSDL定義の仕様の明確化や使用範囲の限定を定めた規約です。WebサービスをWS-I Attachments Profileに準拠させることにより、添付ファイル付きSOAPメッセージを送受信する際のシステム間での相互運用性が向上します。
ポイント
開発方法には、サービスエンドポイントインタフェースをWSDLで設計するトップダウン開発と、サービスエンドポイントとなるJavaクラスを作成し、その結果としてサービスエンドポイントインタフェースが決定するボトムアップ開発があります。
Webサービスにはこれ以外にもJAX-RS (Java API for RESTful Web Services) 規約があります。
JAX-RSは、RESTアーキテクチャに基づいてWebサービスを実装するための規約です。HTTPリクエストおよびレスポンス処理を、アノテーションを用いて実装します。
Java EE 7に含まれるWebサービスの仕様はJAX-RS2.0です。JAX-WSはJava EE 6と同様にJAX-WS2.2です。
ポイント
JAX-RS 2.0の詳細情報については、以下の規約を参照してください。
JSR 339: JAX-RS2.0: The Java API for RESTful Web Services
JAX-WS 2.2の詳細情報については、以下の規約を参照してください。
JSR 224: Java API for XML-Based Web Services (JAX-WS) 2.2