【问题标题】:Maintaining HTTP session between Hessian web service calls in Spring在 Spring 中维护 Hessian Web 服务调用之间的 HTTP 会话
【发布时间】:2012-12-01 01:52:43
【问题描述】:

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

这可能吗?

客户端spring服务配置:

<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

【问题讨论】:

    标签: java spring session hessian spring-remoting


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      这是一个简单的 cookie 支持激活设置。有关更多信息,请参阅 javadocs。我也有一个 Hessian 远程处理,这就是诀窍。

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 2018-09-05
        • 1970-01-01
        • 2013-02-10
        • 1970-01-01
        • 2017-08-18
        • 2016-01-31
        • 2019-05-25
        • 1970-01-01
        相关资源
        最近更新 更多