Application Serverでは,次に示す形態のWebサービスをサポートしています。
それぞれの形態について説明します。
Webサービス実装クラスを使用する場合の形態を次に示します。
図1-5 Webサービス実装クラスを使用したSOAP Webサービスの形態
Webサービス実装クラスを使用すると,WSDLのオペレーションに対応するJavaメソッドを実装するだけでWebサービスを実現できます。複雑な変換はスタブが実施するため,Webサービス開発時に,APIを利用してSOAPメッセージを構成するXMLを組み立てるような,複雑なプログラミングをする必要はありません。
スタブは,ツールが自動生成するか,またはJAX-WSエンジンが動的に生成します。WSDLは自動生成でき,必須となります。また,WSDLに含まれないSOAPメッセージを送受信することはできないので注意してください。なお,Webサービス実装クラスは,POJOとしても,EJBを基にしても作成できます。
プロバイダ実装クラスを使用する場合の形態を次に示します。
図1-6 プロバイダ実装クラスを使用したSOAP Webサービスの形態
プロバイダ実装クラスを使用する場合はスタブもWSDLも必要ないため,任意のSOAPメッセージを動的に送受信したいときに適しています。プロバイダ実装クラスはJAX-WSエンジンがマーシャルしたオブジェクトをそのまま受け取るため,Webサービス開発時に,APIを利用してSOAPメッセージを構成するXMLから値を直接取得したり,APIを利用してSOAPメッセージを構成するXMLを組み立てたりする必要があります。
RESTful Webサービス(Webリソース)はリソースクラスを実装することで実現します。
図1-7 RESTful Webサービス(Webリソース)
リソースクラスには,ルートリソースクラスとサブリソースクラスがあります。
ルートリソースクラスは,クラスレベルでPathアノテーションでアノテートされたJavaクラスです。サブリソースクラスは,クラスレベルでPathアノテーションでアノテートされていないJavaクラスです。
リソースクラスには次に示すメソッドのどれかを実装します。