Web サービスアプリケーションを作る一つの方法は、Java でサーバー側のコー ディングを始めることです。 もし、あなたが Java Web サービスをスクラッチから開発しようとしているか、 既存の Java クラスを Web サービスとして提供したいなら、これが一番手っ とり早い方法です。
Web サービスをふつうの Java クラスとして書きます。それから、提供したい クラスとメソッドに、@WebService, @WebMethod という特定の Web サービス アノテーションで注釈をつけます。 以下のコードの断片はその一例です:
@WebService
public class AddNumbersImpl {
@WebMethod
public int addNumbers(int a, int b) throws AddNumbersException {
if (a < 0 || b < 0) {
throw new AddNumbersException("負数は足せません!",
"数値: " + a + ", " + b);
}
return a + b;
}
}
ソースコード中のアノテーションは apt (annotation processing tool) により処理されます。そして、apt はJava ソースファイルそ れぞれにコンパイラを起動し、クラスファイルを生成します。
一般的に、標準の、または、既にあるサービスのインスタンスで定義された Web サービスを実装したいのならば、あなたは Web サービスの構築を WSDL から始めるでしょうね。どちらの場合も WSDL は既に存在しています。 JAX-WS wsimport ツールが、ディスク上のローカルなコピーまたは ネットワークアドレスから既存 WSDL ドキュメントを取得して処理します。 以下に Web ブラウザを使った、サービスの WSDL への手動によるアクセスを 「配備を確認する」セクションの一部として示しています。
wsimportツール は WSDL デスクリプションを取得し、対応する Java インタフェースとその他 の補助クラスを生成します。ユーザーのコードおよび生成されたコードの両方 をコンパイルするには Java コンパイラが必要になります。
両方の開発シナリオにおいて、jar ツールは、 アプリケーションの各クラスファイルと関連するコンフィギュレーションファ イルを war ファイルのなかにま とめるために使用されます。 war とは、GlassFish か 通常 Tomcat といった Web コンテナに配備されるファイルです。
Web Services Policy Framework (WS-Policy) 仕様に定義された機構を使って先進的な Web サー ビス機能が有効になり、設定されます。 Web サービスは、その要求事項 (requirements) と能力 (capabilities) を、 サービスの WSDL 記述に埋め込んでポリシーを通じて表します。 サービスの利用者 (consumers) は、その表現された要求事項を扱えることを 確認します。そして任意にポリシーに書かれているサーバーの能力を使用しま す。
Reliable Messaging、Addressing、または Secure Conversations といったテ クノロジーは、自分が処理可能なポリシーの表明の集合を提供します。 これらの表明は、与えられた Web サービスで使用される機能に適切なオペレー ションを実行可能にするために必要なコンフィグレーションの詳細を Metro のランタイムへ供給します。 表明は、ある決まったコンフィグレーション設定を特定するか、その仕様 のテクノロジーで決められたデフォルト設定に頼ることになります。例えば、 以下に示されたコード断片において、 wsrm:AcknowledgementInterval と wsrm:InactivityTimeout は両方ともオプションで省略可能です。 以下は WS-Addressing と WS-Reliable Messaging のための WS-Policy 表明 XML の一部です。
<wsp:Policy wsu:Id="AddNumbers_policy">
<wsp:ExactlyOne>
<wsp:All>
<wsaw:UsingAddressing/>
<wsrm:RMAssertion>
<wsrm:InactivityTimeout Milliseconds="600000"/>
<wsrm:AcknowledgementInterval Milliseconds="200"/>
</wsrm:RMAssertion>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
このコードの断片は、WSIT コンフィグレーションファイルまたは Web サービ スの WSDL ドキュメントのなかでも、同等に正しく動くでしょう。
Web サービスのサーバー側を作るのとは異なり、Web サービスのクライアント アプリケーションを作るプロセスは、常に存在する WSDL ドキュメントを使っ て始めることになります。このプロセスは既存の WSDL からサービスを作る ときに採ったステップと似ています。 通常、wsimport ツールが Web サービスプロバイダから直接、WSDL を取得します。そして wsimport は、記述されたインタフェースに 対応する Java ソースコードを生成します。Javac (Java コンパイ ラ) が起動され、ソースコードをコンパイルし、クラスファイルを作ります。 プログラマのコードはその生成されたクラスを使用し、Web サービスにアクセ スします。 例としてコードの一部を示します:
AddNumbersPortType port = new AddNumbersService().getAddNumbersPort(); int a = 10; int b = 20; int result = port.addNumbers(a,b);
サービスと違い、スタンドアローンのクライアントアプリケーションを war ファイルのなかにバンドルする必要はありません。