2010-01-03 147 views
1

我们有一个基于Tomcat/Hibernate/SQL Server堆栈构建的web应用程序。从webservice获取HTTP会话

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

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

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

的Web服务本身的Tomcat 6

回答

2

这实际上是JAX-WS规范的一部分运行。你可以做

@Resource 
WebServiceContext ctx; 

.... 

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

得到从中可以做到与会话或任何东西的ServletRequest对象。

注意:默认情况下,JAX-WS客户端不会维护会话cookie。你必须设置它们来保持会话:

((BindingProvider)proxy).getRequestContext() 
    .put(BindingProvider.SESSION_MAINTAIN_PROPERTY, "true"); 
+0

谢谢你做了这个工作。赞赏 – user179056 2010-02-05 11:36:35