我按照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
答案 0 :(得分:1)
查看HessianProxy.sendRequest()
的源代码 - 它使用标准URLConnection
连接到服务器,但不处理任何cookie。因此,我认为Hessian根本不支持cookie。毕竟HTTP只是一种传输协议,而cookie是严格与浏览器相关的技术。
答案 1 :(得分:0)
尝试将此代码放在应用程序的最开头:
CookieHandler.setDefault( new CookieManager( null, CookiePolicy.ACCEPT_ALL ) );
这是一个简单的Cookie支持激活设置。有关更多信息,请参阅javadocs。我也有一个Hessian遥控器,这就是诀窍。