Web サービス クライアントの概要

Web サービスは大抵の場合、SOAP over HTTP プロトコルを使用します。このシナリオで、SOAP エンベロープは送信されます。コレクションやその他複雑なオブジェクトが SOAP エンベロープにバンドルされている場合、ASCII データ構造を読み書きしづらくなる可能性があります。開発者は、SOAP エンベロープを直接操作して Web サービス クライアントをビルドしようとしてはなりません。経験豊富な開発者は、大抵 Web サービス クライアントのビルドを、SOAP エンベロープのレベルでは行いません。これを行うことは、面倒であり間違いの元でもあります。このため、すべての主なプログラミング言語で、Web サービス開発キットが提供されています。Silk Central では、SOAP メッセージを使用して通信する Web サービスやクライアントの構築に Java API for XML Web Services (JAX-WS) を使用しています。

実装言語(Java、C++、C#、Perl、Python)にかかわらず、Web サービス クライアントの構築の場合、大抵の場合、同じパターンに従います。

  1. 開発キット ツールに Web サービス WSDL を指定
  2. ステップ 1 で返されたクライアント スタブを取得
  3. ステップ 2 で生成されたクライアント スタブを編集して、完全なクライアントを取得
JAX-WS は、このパターンに従います。ここで、WSDL からクライアント スタブを構築するのに、wsimport ツール(JDK にバンドル)を使用します。 wsimport の使用方法の詳細については、『JDK Tools and Utilities』を参照してください。 前の入門トピックで使用されていたスイッチの簡単な説明は以下のとおりです。
  • -s:クライアント スタブの出力ディレクトリ
  • -p:ターゲットのパッケージ。このパッケージ構造にデプロイされます。

例:wsimport -s <生成するスタブの場所> -p <ターゲット パッケージ> <WSDL>

wsimport ツールは、Web サービスのクライアントをサポートするために、複数のクラスを生成します。サービス名が YourWebService である場合、次のクラス群が出力されることになります。

Silk Central Web サービスにアクセスする JAX-WS クライアントを生成するには、YourWebServiceClient という新しい Java クラスを作成します。Web サービスにはポートを介してバインドする必要があります。ポートは、リモート サービスのプロキシとして動作するローカル オブジェクトです。ポートは、上記手順で示した wsimport ツールの実行によって作成されます。このプロキシを取得するには、getRequirementsServicePort メソッドをサービスに対して呼び出します。

// Bind to the Requirements service
  RequirementsServiceService port = new RequirementsServiceService
    (new URL("http", mHost, mPort, "/Services1.0/jaxws/requirements?wsdl"));
  RequirementsService requirementsService = port.getRequirementsServicePort();

Web サービスの認証には、Silk Central UI の ユーザー設定 ページで生成した Web サービス トークンを使用できます。このページにアクセスするには、Silk Central メニューに表示されているユーザー名にマウス カーソルを移動し、ユーザー設定 を選択します。

また、ユーザー名とパスワードを指定してサービスの logonUser メソッドを呼び出してセッション ID を取得することもできます。

// Login to Silk Central and get session ID
  String sessionId = requirementsService.logonUser(mUsername, mPassword);