从Web服务获取HTTP会话

时间:2010-01-03 13:28:34

标签: web-services cxf

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

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

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

我是否需要使用基本的servlet API获取HTTP会话(知道正在使用CXF servlet)?或者CXF级别是否有API支持?

webservice本身在Tomcat 6中运行。

1 个答案:

答案 0 :(得分: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");