JaxWSProxyFactoryBean共享HTTP会话

时间:2009-11-16 10:30:24

标签: cxf

我们正在开发一个项目,我们正在使用CXF框架提供的JaxWSProxyFactoryBean来调用webservices。 我使用SPRING配置来创建客户端,而不是直接在代码中使用API​​。 我还设置了maintain_session属性以确保会话由WS客户端维护。

< jaxws:client id =“userAuthenticationServiceClient1”address =“$ {application.deployment.url} / UserAuthentication”     serviceClass =“com.authentication.webservice.IUserAuthenticationService”abstract =“true”> < jaxws:properties>     < entry key =“javax.xml.ws.session.maintain”>     < value type =“java.lang.Boolean”> true< / value>     < /条目>     < / JAXWS:性状> < / JAXWS:客户机GT;

但我发现不在各种webservices实例中维护会话。 为了更清楚 如果有代理客户端,如wc1,wc2,wc3。在wc1上调用的所有操作都将具有其会话,而wc2将创建新会话。 有人可以让我知道我需要做什么设置,以便所有ws客户端共享会话吗?

1 个答案:

答案 0 :(得分:2)

真的没有一种“自动”的方式来做到这一点。每个服务代理都旨在与其他服务代理完全分离。但是,您可以通过以下方式“手动”将会话cookie从一个代理复制到另一个代理:

HTTPConduit conduit1 = (HTTPConduit)ClientProxy.getClient(p1).getConduit(); HTTPConduit conduit2 = (HTTPConduit)ClientProxy.getClient(p2).getConduit(); conduit2.getCookies().putAll(conduit1.getCookies());

这应该将所有cookie从一个复制到另一个。