9.17. 共通 API
本項は Web サービスエンドポイント と Web サービスクライアント に同等に当てはまる概念について説明しています。
9.17.1. ハンドラーフレームワーク リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ハンドラーフレームワークは JAX-WS プロトコルバインディングによってクライアントおよびサーバー側両方のランタイムで実装されます。 バインディングプロバイダーとして集合的に知られるプロキシおよび Dispatch インスタンスはそれぞれプロトコルバインディングを使ってその抽出機能を特定のプロトコルにバインドします。
クライアントおよびサーバー側ハンドラーはハンドラーチェーンとして知られる順序付けされた一覧に並べられます。 ハンドラーチェーン内のハンドラ群はメッセージが送信または受信される度に呼び出されます。 インバウンドメッセージはバインディングプロバイダー処理の前に処理されます。 アウトバウンドメッセージはあらゆるバインディングプロバイダー処理の後に処理されます。
ハンドラーは、 インバウンドメッセージとアウトバウンドメッセージにアクセスして編集、 およびプロパティセットの管理を行うメソッドを提供するメッセージコンテキストで呼び出されます。 メッセージコンテキストのプロパティはハンドラー間での通信やハンドラーとクライアントおよびサービス実装間での通信を容易にするために使用することができます。 異なるメッセージコンテキストタイプで異なるタイプのハンドラーが呼び出されます。
9.17.1.1. 論理ハンドラー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
メッセージコンテキストプロパティおよびメッセージペイロードでのみ動作するハンドラです。 論理ハンドラーはプロトコルにとらわれないため、 メッセージのプロトコル固有部分には作用できません。 論理ハンドラーは
javax.xml.ws.handler.LogicalHandler
を実装するハンドラーになります。
9.17.1.2. プロトコルハンドラー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
メッセージコンテキストプロパティおよびプロトコル固有メッセージでのみ動作するハンドラです。 プロトコルハンドラは特定のプロトコルに固有となるため、 メッセージのプロトコル特定部分にアクセスして変更することができます。 プロトコルハンドラーは
javax.xml.ws.handler.LogicalHandler
以外の javax.xml.ws.handler.Handler
から生じたあらゆるインターフェースを実装するハンドラーになります。
9.17.1.3. サービスエンドポイントのハンドラー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
サービスエンドポイントで、 ハンドラーは @HandlerChain アノテーションを使って定義されます。
ハンドラーチェーンファイルの場所は 2 種類の形式に対応しています。
1. externalForm での完全な java.net.URL。 (例、 http://myhandlers.foo.com/handlerfile1.xml)
2. ソースファイルまたはクラスファイルからの相対パス。 (例、 bar/handlerfile1.xml)
9.17.1.4. サービスクライアントのハンドラー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
クライアント側で、 ハンドラーは SEI で @HandlerChain アノテーションを使用して、 あるいは API を使って動的に設定することができます。