このチュートリアルのアプリケーションで行うのは、チェック対象のテキストの入力、Web サービス上での処理の開始、および結果の描画だけです。Web サービスへの接続とテキストの送信に必要なコードは、IDE がすべて生成します。Spell Checker Web サービスがその他の処理を行います。スペルミスのある単語を特定し、修正候補のリストを表示します。
注: このチュートリアルで使用する Spell Checker Web サービスは、CDYNE 社が提供しています。CDYNE は、データ拡張、データ品質、およびデータ分析の各 Web サービスと、ビジネスインテリジェンスを統合する、包括的なスイートを開発、販売、およびサポートしています。Spell Checker Web サービスは、CDYNE が提供する Web サービスの 1 つです。1 つまたは複数の Web サービスに基づくアプリケーションの堅牢さは、Web サービスの可用性と信頼性によって決まります。ただし、CDYNE の FAQ では、CDYNE が「100% の可用性を目標」とし、「自然災害、テロ、その他の災害時に、Web サービスのトラフィックはセカンダリデータセンターに転送される」とあります。CDYNE のおかげでこのチュートリアルを執筆できました。サービスの開発のサポートに感謝します。
Spell Checker Web サービスの使用
Web サービスを使用するには、Web サービスクライアントを作成する必要があります。Web サービスクライアントの作成のために、NetBeans IDE 6.1 および 6.0 にはクライアント作成機能が用意されています。これは、Web サービス検索用のコードを生成する、「Web サービスクライアント」ウィザードです。また、作成した Web サービスクライアントを開発する機能もあります。これは「プロジェクト」ウィンドウ上の複数のノードからなる作業領域で行います。これらの機能は NetBeans IDE の標準インストールに含まれているため、すぐに使用できます。また、プラグインは必要ありません。
この「プロジェクト」ウィンドウは、「check」という Web サービスにより、アプリケーションで「CheckTextBody」操作が利用可能になったことを示しています。「CheckTextBody」操作は、文字列をチェックしてスペルミスを発見し、クライアントで処理するデータを返します。このチュートリアル全体で、この操作を使用します。
「ファイル」ウィンドウの build ノード内は、次のようになっているはずです。
「ファイル」ウィンドウには、JAX-WS Web サービスクライアントのウィザードによって生成されたクライアント用スタブが表示されています。
クライアントの開発
Web サービスクライアントを実装する方法はいくつもあります。Web サービスの WSDL ファイルは、Web サービスに送信できる情報の種類を制限するとともに、逆に受け取る情報の種類も制限します。ただし、WSDL ファイルは、必要となる情報を送信する方法や、ユーザーインタフェースを構成する内容には制限を設けません。次に構築するクライアント実装は、ユーザーがテキストを入力してチェックできるようにする JSP ページと、そのテキストを Web サービスに送信したあと結果レポートを生成するサーブレットで構成されます。
JSP ページのコーディング
今回の JSP ページは、ユーザーがテキストを入力するテキスト領域と、そのテキストを Web サービスに送信するボタンの単純な構成にします。
次のように、processRequest メソッドの上に Web サービスを呼び出すコードのスニペットが表示されます。
try { // Call Web Service Operation com.cdyne.ws.CheckSoap port = service.getCheckSoap(); // TODO initialize WS operation arguments here java.lang.String bodyText = ""; java.lang.String licenseKey = ""; // TODO process result here com.cdyne.ws.DocumentSummary result = port.checkTextBody(bodyText, licenseKey); System.out.println("Result = " + result); } catch (Exception ex) { // TODO handle custom exceptions here }
Web サービスのオペレーションを呼び出すのに必要なのはこのメソッドだけです。また、クラスの先頭で次のコード行が宣言されます。