在Spring中维护Hessian Web服务调用之间的HTTP会话

时间:2012-08-29 09:52:16

标签: java spring session hessian spring-remoting

我按照Spring remoting documentation设置我的服务,但在客户端应用程序中,我想调用服务方法,同时重用相同的HTTP会话,因为我想在服务器上存储会话相关数据(而不是在每次通话时查询该数据)。

这可能吗?

客户端弹簧服务配置:

<bean id="partnersServiceImpl" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
    <property name="serviceUrl" value="http://localhost:8080/partners" />
    <property name="serviceInterface" value="somePackage.PartnersService" />
</bean>

目前,每个被调用的方法都会生成一个新的sessionID:

PartnersService partners = (PartnersService) context.getBean("partnersServiceImpl");

List<?> partnersList = partners.getSomeData(2011); // Will have one SessionID
partnersList = partners.getSomeData(2012); // Will have a new SessionID

2 个答案:

答案 0 :(得分:1)

查看HessianProxy.sendRequest()的源代码 - 它使用标准URLConnection连接到服务器,但不处理任何cookie。因此,我认为Hessian根本不支持cookie。毕竟HTTP只是一种传输协议,而cookie是严格与浏览器相关的技术。

答案 1 :(得分:0)

尝试将此代码放在应用程序的最开头:

CookieHandler.setDefault( new CookieManager( null, CookiePolicy.ACCEPT_ALL ) );

这是一个简单的Cookie支持激活设置。有关更多信息,请参阅javadocs。我也有一个Hessian遥控器,这就是诀窍。

相关问题