2

Tomcat 6/ WebWork / Hibernate /SQL Server スタック上に構築された Web アプリケーションがあります。

Web アプリケーションの一部は、Flareツールキットを使用して構築されたネットワーク マップです (Flare の前身はPrefuseでした)。ネットワーク マップ データは、getData() などの Web サービス呼び出しを介して取得されます。この呼び出しは、表示する必要がある XML データを取得するために Flare アプリケーションによって行われます。Web サービス自体は、Apache CXFを使用して開発されています。

Web サービスとして指定されたメソッド内で HTTP セッションを取得する方法を理解しようとしています。クライアント (Flare アプリケーション) の Web サービス要求全体でサーバー側のデータを維持する必要があるため、これが必要です。

基本的なサーブレット API を使用して HTTP セッションを取得する必要がありますか (CXF サーブレットが使用されていることがわかっている場合)? または、CXF レベルでの API サポートはありますか?

Web サービス自体は Tomcat 6 内で実行されます。

4

1 に答える 1

3

これは実際には JAX-WS 仕様の一部です。できるよ

@Resource 
WebServiceContext ctx;

....

ctx.getMessageContext().get(MessageContext.SERVLET_REQUEST)

セッションなどで何でもできるServletRequestオブジェクトを取得します。

注: デフォルトでは、JAX-WSクライアントはセッション Cookie を維持しません。セッションを維持するには、それらを設定する必要があります。

((BindingProvider)proxy).getRequestContext()
  .put(BindingProvider.SESSION_MAINTAIN_PROPERTY, "true");
于 2010-01-06T17:12:15.737 に答える