Menu Close

31.2. サービスの公開に使用される API

概要

javax.xml.ws.Enddpoint クラスは JAX-WS サービスプロバイダーを公開する作業を実行します。エンドポイントを公開するには、以下を行います。

  1. サービスプロバイダーの Endpoint オブジェクトを作成する。
  2. エンドポイントを公開する。
  3. アプリケーションのシャットダウン時にエンドポイントを停止する。

Endpoint クラスは、サービスプロバイダーを作成および公開するための手段を提供します。また、1 つのメソッド呼び出しでサービスプロバイダーを作成および公開できる手段も提供します。

サービスプロバイダーのインスタンス化

サービスプロバイダーは、Endpoint オブジェクトを使用してインスタンス化されます。以下のメソッドのいずれかを使用して、サービスプロバイダーの Endpoint オブジェクトをインスタンス化します。

  • 静的 EndpointcreateObjectimplementor: この create() メソッドは、指定されたサービス実装の Endpoint を返します。実装クラスの javax.xml.ws.BindingType アノテーションが存在する場合、これにより提供される情報を使用して Endpoint オブジェクトが作成されます。アノテーションが存在しない場合、Endpoint はデフォルトの SOAP 1.1/HTTP バインディングを使用します。
  • 静的 EndpointcreateURIbindingIDObjectimplementor: この create() メソッドは、指定されたバインディングを使用して指定された実装オブジェクトの Endpoint オブジェクトを返します。javax.xml.ws.BindingType アノテーションが存在する場合、このメソッドはそのアノテーションにより提供されるバインディング情報を上書きします。bindingID を解決できない場合や、null である場合、javax.xml.ws.BindingType に指定されたバインディングを使用して Endpoint を作成します。bindingID あるいは javax.xml.ws.BindingType のいずれも使用できない場合、Endpoint はデフォルトの SOAP 1.1/HTTP バインディングを使用して作成されます。
  • 静的 EndpointpublishStringaddressObjectimplementor: publish() メソッドは、指定された実装の Endpoint オブジェクトを作成し、それを公開します。Endpoint オブジェクトに使用されるバインディングは、提供される address の URL スキームによって決定されます。実装で使用できるバインディングのリストをスキャンして、URL スキームをサポートするバインディングの有無を確認します。見つかれば、Endpoint オブジェクトが作成され、公開されます。何も見つからない場合は、メソッドが失敗します。

    publish() を使用することは、create() メソッドのいずれかを呼び出してから、???TITLE??? で使用される publish() メソッドを呼び出すことと同じです。

重要

Endpoint 作成メソッドに渡される実装オブジェクトは、javax.jws.WebService のアノテーションが付けられたクラスのインスタンスで SEI 実装の要件を満たすか、あるいはjavax.xml.ws.WebServiceProvider のアノテーションが付けられたクラスのインスタンスでプロバイダーインターフェースを実装する、のいずれかでなければなりません。

サービスプロバイダーの公開

以下の Endpoint メソッドのいずれかを使用して、サービスプロバイダーを公開できます。

  • publishStringaddress: この publish() メソッドは、指定されたアドレスでサービスプロバイダーを公開します。

    重要

    address の URL スキームは、サービスプロバイダーのバインディングのいずれかと互換性がある必要があります。

  • publishObjectserverContext: この publish() メソッドは、指定されたサーバーコンテキストで提供される情報に基づいてサービスプロバイダーを公開します。サーバーコンテキストはエンドポイントのアドレスを定義する必要があり、さらにコンテキストはサービスプロバイダーの利用可能なバインディングのいずれかと互換性がなければなりません。

公開したサービスプロバイダーの停止

サービスプロバイダーが不要になった場合は、その stop() メソッドを使用して停止する必要があります。例31.1「公開されたエンドポイントを停止するメソッド」に示す stop() メソッドは、エンドポイントをシャットダウンして、使用しているリソースをすべてクリーンアップします。

例31.1 公開されたエンドポイントを停止するメソッド

stop

重要

エンドポイントを停止したら、エンドポイントを再公開することはできません。