43.4. プロトコルハンドラーの実装


概要

プロトコルハンドラーは、使用中のプロトコルに固有です。Apache CXF は、JAX-WS で指定されている SOAP プロトコルハンドラーを提供します。SOAP プロトコルハンドラーは、javax.xml.ws.handler.soap.SOAPHandler インターフェイスを実装します。

例43.8「SOAPHandler の概要」に示されている SOAPHandler インターフェイスは、メッセージへのアクセスを SOAPMessage オブジェクトとして提供する SOAP 固有のメッセージコンテキストを使用します。また、SOAP ヘッダーにアクセスすることもできます。

例43.8 SOAPHandler の概要

public interface SOAPHandler extends Handler
{
  boolean handleMessage(SOAPMessageContext context);
  boolean handleFault(SOAPMessageContext context);
  void close(SOAPMessageContext context);
  Set<QName> getHeaders()
}

SOAP 固有のメッセージコンテキストを使用する他に、SOAP プロトコルハンドラーでは追加のメソッド getHeaders() を実装する必要があります。この追加のメソッドは、ハンドラーが処理できるヘッダーブロックの QName を返します。

手順

論理ハンダーを実装するには、次のようにします。

  1. ハンドラーに必要な 「ハンドラーの初期化」 ロジックの実装。
  2. 「SOAP ハンドラーでのメッセージの処理」 ロジックの実装。
  3. 「障害メッセージの処理」 ロジックの実装。
  4. getHeaders() メソッドを実装します。
  5. 終了時に 「ハンドラーを閉じる」 ハンドラーのロジックを実装する。
  6. 「ハンドラーのリリース」 ハンドラーのリソースのロジックを破棄される前に実装する。

getHeaders() メソッドの実装

例43.9「SOAPHander.getHeaders() メソッド」 で示されている getHeaders() メソッドは、ハンドラーが処理する SOAP ヘッダーを Apache CXF ランタイムに通知します。ハンドラーが理解する各 SOAP ヘッダーの外部要素の QName を返します。

例43.9 SOAPHander.getHeaders() メソッド

Set<QName>getHeaders

多くの場合、単に null を返すだけで十分です。しかし、アプリケーションがいずれかの SOAP ヘッダーの mustUnderstand 属性を使用する場合は、アプリケーションの SOAP ハンドラーが理解するヘッダーを指定することが重要になります。ランタイムは、mustUnderstand 属性が true に設定されたヘッダーのリストから、登録されたすべてのハンドラーが認識する SOAP ヘッダーのセットを確認します。フラグが立てられたヘッダーのいずれかが理解されたヘッダーのリストにない場合、ランタイムはメッセージを拒否し、SOAP は例外を理解する必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.