2

我们有一个基于Tomcat 6/ WebWork / Hibernate /SQL Server 堆栈的 Web 应用程序。

Web 应用程序的一部分是使用Flare工具包构建的网络地图(Flare 的前身是Prefuse)。网络地图数据通过 web 服务调用获取,例如 getData()。Flare 应用程序进行此调用以检索它需要显示的 XML 数据。Web 服务本身是使用Apache CXF开发的。

我试图弄清楚如何在指定为 web 服务的方法中获取 HTTP 会话。我需要这个,因为我需要跨客户端(Flare 应用程序)Web 服务请求维护服务器端数据。

我是否需要使用基本的 servlet API 来获取 HTTP 会话(知道正在使用 CXF servlet)?或者是否有 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 回答