Hitachi

Cosminexus V11 アプリケーションサーバ Webサービスセキュリティ構築ガイド


3.10.3 Webサービスクライアントの実装手順

JAX-WS機能でWebサービスクライアントを開発する場合の流れを次に示します。

  1. WSDLファイルの入手

  2. Javaソースの生成

  3. Webサービスクライアントの実装

  4. Webサービスの呼び出し

Webサービスセキュリティ機能を組み込むためには,開発ステップ2でWebサービスセキュリティハンドラを追加し,開発ステップ3で各種定義ファイルと設定ファイルを追加する必要があります。

注意事項

Webサービスセキュリティハンドラは,必ず単独で使用する必要があります。ほかのハンドラとの併用はできないため,注意してください。

参考

サービスクラスの生成およびポートの取得には処理コストが掛かるため,一度生成したサービスクラスおよび取得したポートは再利用することを推奨します。再利用の詳細については,マニュアル「アプリケーションサーバ Webサービス開発ガイド」を参照してください。

ここでは,開発ステップ2と開発ステップ3についてだけ説明します。そのほかの開発ステップの詳細は,マニュアル「アプリケーションサーバ Webサービス開発ガイド」を参照してください。

〈この項の構成〉

(1) Webサービスセキュリティハンドラを追加する

Application Serverでは,外部バインディングファイルのテンプレート(cwssbinding.xml)を提供しています。WebサービスクライアントにWebサービスセキュリティ機能を組み込む場合は,テンプレートをコピーして作成した外部バインディングファイルを利用して,Webサービスセキュリティハンドラ(com.cosminexus.wss.handlers.WSSClientHandler)を追加してください。

Webサービスクライアント実装時には,まず外部バインディングファイルのbindings要素のwsdlLocation属性にWSDLファイルを指定します。例を次に示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxws:bindings 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
    xmlns:javaee="http://java.sun.com/xml/ns/javaee"
    wsdlLocation="./WEB-INF/wsdl/WebService.wsdl">
    <jaxws:bindings node="wsdl:definitions">
        <javaee:handler-chains>
            <javaee:handler-chain>
                <javaee:handler>
                    <javaee:handler-class>com.cosminexus.wss.handlers.WSSClientHandler</javaee:handler-class>
                </javaee:handler>
            </javaee:handler-chain>
        </javaee:handler-chains>
    </jaxws:bindings>
</jaxws:bindings>

編集した外部バインディングファイルを引数に指定して,JAX-WS機能が提供するcjwsimportコマンドを実行します。これにより,WebサービスクライアントにWebサービスセキュリティハンドラを追加するための二つのハンドラチェイン設定ファイルが生成されます。生成されるハンドラチェイン設定ファイルの名称と用途を次に示します。

表3‒5 cjwsimportコマンドで生成されるハンドラチェイン設定ファイル

ファイル名

用途

サービス名 + "_handler.xml "

サービスクラス用ハンドラチェイン設定ファイル

SEI名+ "_handler.xml "

SEI用ハンドラチェイン設定ファイル

生成されたハンドラチェイン設定ファイルは,編集しないでそのまま使用してください。また,cjwsimportコマンド,サービス名,およびSEI名の詳細については,マニュアル「アプリケーションサーバ Webサービス開発ガイド」を参照してください。

(2) Webサービスセキュリティ機能定義ファイル,Webサービスセキュリティ方針定義ファイル,ハンドラチェイン設定ファイルを追加する

Webサービスセキュリティ機能定義ファイル,Webサービスセキュリティ方針定義ファイル,および「3.10.3(1) Webサービスセキュリティハンドラを追加する」で生成したサービスクラス用ハンドラチェイン設定ファイルおよびSEI用ハンドラチェイン設定ファイルは,それぞれ適切なディレクトリに配置する必要があります。

Webサービスセキュリティ機能定義ファイルおよびWebサービスセキュリティ方針定義ファイルは,組み込みたいWebサービスセキュリティ機能の種類によって編集方法が異なります。編集方法については,目的に応じて次の個所を参照してください。

配置方法についての参照個所は,次のとおりです。

生成した二つのハンドラチェイン設定ファイルは編集しないで,そのままサービスクラスおよびSEIのクラスファイルと同じディレクトリに配置してください。

(3) コマンドラインを利用してWebサービスクライアントを実行する

cjclstartapコマンドを使用して,Webサービスセキュリティ機能を適用したクライアントを実行する場合,Javaアプリケーション用オプション定義ファイルに次の値を設定したキーを追加する必要があります。

Javaアプリケーション用オプション定義ファイルについてはマニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を,コマンドライン利用時の設定についてはマニュアル「アプリケーションサーバ Webサービス開発ガイド」を参照してください。

(4) サービスクラス生成時の注意事項

Webサービスセキュリティ機能をWebサービスクライアントに適用する場合,複数のスレッドで同時にサービスクラスを生成しないでください。異なるサービスクラスの場合も,複数のスレッドで同時に生成するとエラーが発生するおそれがあります。