3.10.3 Webサービスクライアントの実装手順
JAX-WS機能でWebサービスクライアントを開発する場合の流れを次に示します。
-
WSDLファイルの入手
-
Javaソースの生成
-
Webサービスクライアントの実装
-
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サービスセキュリティハンドラを追加するための二つのハンドラチェイン設定ファイルが生成されます。生成されるハンドラチェイン設定ファイルの名称と用途を次に示します。
ファイル名 |
用途 |
---|---|
サービス名 + "_handler.xml " |
サービスクラス用ハンドラチェイン設定ファイル |
SEI名+ "_handler.xml " |
SEI用ハンドラチェイン設定ファイル |
生成されたハンドラチェイン設定ファイルは,編集しないでそのまま使用してください。また,cjwsimportコマンド,サービス名,およびSEI名の詳細については,マニュアル「アプリケーションサーバ Webサービス開発ガイド」を参照してください。
(2) Webサービスセキュリティ機能定義ファイル,Webサービスセキュリティ方針定義ファイル,ハンドラチェイン設定ファイルを追加する
Webサービスセキュリティ機能定義ファイル,Webサービスセキュリティ方針定義ファイル,および「3.10.3(1) Webサービスセキュリティハンドラを追加する」で生成したサービスクラス用ハンドラチェイン設定ファイルおよびSEI用ハンドラチェイン設定ファイルは,それぞれ適切なディレクトリに配置する必要があります。
Webサービスセキュリティ機能定義ファイルおよびWebサービスセキュリティ方針定義ファイルは,組み込みたいWebサービスセキュリティ機能の種類によって編集方法が異なります。編集方法については,目的に応じて次の個所を参照してください。
配置方法についての参照個所は,次のとおりです。
-
WebサービスクライアントがWebアプリケーションの場合の配置方法は,「3.9.2(3) WARファイルを作成する」を参照してください。
-
WebサービスクライアントがコマンドラインJavaアプリケーションの場合の配置方法は,「3.9.3 クライアント側がコマンドラインJavaアプリケーションの場合の実装手順」を参照してください。
-
WebサービスクライアントがEJBアプリケーションの場合の配置方法は,「3.9.4(2) 定義ファイルを格納する」を参照してください。
生成した二つのハンドラチェイン設定ファイルは編集しないで,そのままサービスクラスおよびSEIのクラスファイルと同じディレクトリに配置してください。
(3) コマンドラインを利用してWebサービスクライアントを実行する
cjclstartapコマンドを使用して,Webサービスセキュリティ機能を適用したクライアントを実行する場合,Javaアプリケーション用オプション定義ファイルに次の値を設定したキーを追加する必要があります。
-
add.class.path=<Application Serverのインストールディレクトリ>\wss\lib\cwssec.jar
-
add.class.path=<Application Serverのインストールディレクトリ>\XMLSEC\lib\csmxsec.jar
Javaアプリケーション用オプション定義ファイルについてはマニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を,コマンドライン利用時の設定についてはマニュアル「アプリケーションサーバ Webサービス開発ガイド」を参照してください。
(4) サービスクラス生成時の注意事項
Webサービスセキュリティ機能をWebサービスクライアントに適用する場合,複数のスレッドで同時にサービスクラスを生成しないでください。異なるサービスクラスの場合も,複数のスレッドで同時に生成するとエラーが発生するおそれがあります。