我们有一个基于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中运行。
答案 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");