2011-01-17 16 views
1

プレーンなJAX-WSを使用してWebメソッド内のすべてのSOAPヘッダーのリストを取得する方法はありますか?私はこれがメトロの特定のクラス(HeaderList hl = messageContext.get(JAXWSProperties.INBOUND_HEADER_LIST_PROPERTY))を使って行うことができることを知っています。しかし、実行時にその実装を使用することに頼ることができるかどうかはわかりませんので、JAX-WSに固執したいと思います。JAX-WS - WebメソッドでSOAPヘッダーを取得する

@WebParamアノテーションのheader属性についても知っています。私はヘッダーパラメーターを指定する必要はありません。なぜなら、私のWebサービスには、すべてのWebメソッドに共通のIDがいくつかあり、これがインターフェースを汚染するからです。また、別のIDが来た場合や、もう一度削除された場合(仕様は最終的なものではありません)、すべてのWebメソッドを変更する必要があります。また、ヘッダーを使用する理由もなくなり、通常のメソッドパラメーターになる可能性があります。

私が知っている第3の方法は、@HandlerChain経由のハンドラを使用していますが、実行されたWebメソッドでヘッダーを接続する方法がありません。私が言及したIDは、後続の処理にとって重要です。メソッドとは独立して動作するアクセス制御だけではありません。

+0

私は_j2ee_タグについてあまりにも賢明ではないと思っていますが、現在は純粋なJ2SEを使用しています。 – musiKk

答えて

2

リクエストハンドラを実装する場合は、スレッドローカルの静的変数にヘッダを格納し、サービスメソッド実装のための何らかのアクセスメカニズムを実装できます。

+1

そのコンテキストでは、ThreadLocalについては考えていません。 Webサービスのような高レベルのものを扱うときには、このような低レベルの概念を使用するのは変ですが、それは仕事を完了させるようです。 – musiKk

関連する問題