16.6.2. JAX-WS Common API Reference
ハンドラーフレームワーク
ハンドラーフレームワークは、クライアントおよびエンドポイント (サーバーコンポーネント) の JAX-WS プロトコルバインディングによって実装されます。binding providers として知られるプロキシーおよび Dispatch インスタンスは、それぞれプロトコルバインディングを使用して抽象機能を特定のプロトコルにバインドします。
メッセージハンドラーの種類
- 論理ハンドラー
- Logical handlers は、メッセージコンテキストプロパティーおよびメッセージペイロードでのみ動作します。論理ハンドラーはプロトコルに依存しないため、メッセージのプロトコル固有の部分には影響がありません。論理ハンドラーはインターフェイスを実装します
javax.xml.ws.handler.LogicalHandler。 - プロトコルハンドラー
- Protocol handlers は、メッセージコンテキストプロパティーおよびプロトコル固有のメッセージで動作します。プロトコルハンドラーは特定のプロトコルに固有のもので、メッセージのプロトコル固有の側面にアクセスし、変更する可能性があります。プロトコルハンドラーは、から派生した任意のインターフェイスを実装します
javax.xml.ws.handler.Handler except javax.xml.ws.handler.LogicalHandler。 - サービスエンドポイントハンドラー
- サービスエンドポイントでは、ハンドラーは
@HandlerChain注釈。ハンドラーチェーンファイルの場所は、絶対的なものにすることができますjava.net.URLのexternalFormまたは、ソースファイルまたはクラスファイルからの相対パス。例16.30 サービスエンドポイントハンドラーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サービスクライアントハンドラー
- JAX-WS クライアントでは、ハンドラーはサービスエンドポイントの場合と同様に
@HandlerChainアノテーションを使用するか、JAX-WS API を使用して動的に定義されます。例16.31 API を使用したサービスクライアントハンドラーの定義
Copy to Clipboard Copied! Toggle word wrap Toggle overflow への呼び出しsetHandlerChainメソッドが必要です。
メッセージコンテキスト
TheMessageContextinterface は、すべての JAX-WS メッセージコンテキストのスーパーインターフェイスです。これは、追加のメソッドと定数を使用して Map<String,Object> を拡張し、ハンドラーチェーンのハンドラーが処理関連の状態を共有できるようにするプロパティーセットを管理します。たとえば、ハンドラーは put メソッドを使用してプロパティーをメッセージコンテキストに挿入します。ハンドラーチェーン内の他の 1 つ以上のハンドラーは、その後、get方法。
APPLICATION または HANDLER としてスコープ指定されます。すべてのプロパティーは、特定のエンドポイントのメッセージ交換パターン (MEP) のインスタンスに対するすべてのハンドラーで利用できます。たとえば、論理ハンドラーがプロパティーをメッセージコンテキストに置いた場合、そのプロパティーは MEP インスタンスの実行中にチェーンの任意のプロトコルハンドラーでも利用できます。
APPLICATION レベルでスコープ設定されているプロパティーは、クライアントアプリケーションおよびサービスエンドポイント実装でも利用可能になります。Thedefaultscopeプロパティーの場合は HANDLER です。
- 論理メッセージコンテキスト
- 論理ハンドラーが呼び出されると、タイプのメッセージコンテキストを受け取ります
LogicalMessageContext。LogicalMessageContext拡張しますMessageContextメッセージペイロードを取得および変更するメソッドを使用します。メッセージのプロトコル固有の側面へのアクセスは提供しません。プロトコルバインディングは、論理メッセージコンテキストを介して使用できるメッセージのコンポーネントを定義します。SOAP バインディングにデプロイされた論理ハンドラーは SOAP ボディーのコンテンツにアクセスできますが、SOAP ヘッダーにはアクセスできません。一方、XML/HTTP バインディングは論理ハンドラーがメッセージの XML ペイロード全体にアクセスできることを定義します。 - SOAP メッセージコンテキスト
- SOAP ハンドラーが呼び出されると、
SOAPMessageContext。SOAPMessageContext拡張しますMessageContextSOAP メッセージペイロードを取得および変更するメソッドを使用します。
障害処理
アプリケーションが SOAPFaultException またはアプリケーション固有のユーザー例外をスローする可能性があります。後者の場合、必要な障害ラッパー Bean がデプロイメントに含まれていない場合は、ランタイム時に生成されます。
例16.32 障害処理の例
public void throwApplicationException() throws UserException
{
throw new UserException("validation", 123, "Some validation error");
}
public void throwApplicationException() throws UserException
{
throw new UserException("validation", 123, "Some validation error");
}
JAX-WS アノテーション
JAX-WS API 経由で利用可能なアノテーションは JSR-224 で定義されています。これについては、を参照してください http://www.jcp.org/en/jsr/detail?id=224。これらの注釈はパッケージに含まれていますjavax.xml.ws。
javax.jws。