<bean id="testService"
class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="${server.URL}testService"/>
<property name="serviceInterface" value="com.test.TestService" />
</bean>
测试了一下, 调用是没有问题的,但是有一个Session的问题.
对于Server来说, 如果在Client端对testService进行两次远程调用, 比如
testService.method1();
testService.method2();
对于Server来说是两个不同的会话! 跟踪了一下发现是两次调用的SessionID不一样. 一个老外提出了解决方法是覆盖org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean, 在调用setServiceURL的时候在url后面附加;jsessionid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 固定sessionID. 但是我试验了下没成功. 跟踪发现原因是Tomcat6的确能够接收到这个sid, 但是因为某个配置(没有仔细往里面跟), 这个request里面的sid被丢弃了, 在Tomcat代码的注释里面明确写到是因为安全的原因 (防止有人构造出来这某个sid来访问别人的东西. // Do not reuse the session id if it is from a URL, to prevent possible phishing attacks). 可能这种方法对于其它的应用服务器是OK的.
查了半天,最后发现结果也挺简单, 不使用默认的HTTPInvoker就OK了:
<bean id="testService"
class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="${server.URL}testService"/>
<property name="serviceInterface" value="com.test.TestService" />
<property name="httpInvokerRequestExecutor">
<ref bean="httpInvokerExecutor" />
</property>
</bean>
<bean id="httpInvokerExecutor"
class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor">
</bean>
按照Spring给出的文档, 默认的HTTPInvoker是JDK里面的, 比较简单; 这个CommonsHttpInvokerRequestExecutor 是 Apache Commons 包里面的, 功能比较完全, 支持登录, 代理, 等等.
分享到:
相关推荐
验证码的Session问题主要涉及到Web应用中的用户验证与安全机制。在Web开发中,验证码是一种防止自动机器人或恶意脚本进行非法操作的有效手段,如防止批量注册、刷票等。而Session是服务器端用来存储用户会话信息的一...
然而,随着Web服务的复杂性和交互性增加,跨域资源共享(CORS)和会话(Session)共享成为开发者需要面对的重要问题。本文将详细讲解如何在Spring Boot应用中解决跨域session共享的问题,并探讨防止SQL注入的相关...
因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...
正对java Web项目,同浏览器同时打开两个登录窗口(不同Tag),用不同用户登录,为避免使用同一个Session,需要使用这段代码。否则先登录的用户的Session会变成后登录用户的Session.相关系统使用权限也会变。
CASClient 集群环境的 Session 问题及解决方案 本文将详细介绍 CASClient 集群环境中的 Session 问题及解决方案。CASClient 是一种开源的单点登录系统,能够提供统一的登录和注销机制。但是在集群环境中应用 CAS...
然而,Session丢失问题可能会导致用户在未主动退出的情况下被迫重新登录,这对用户体验来说是极为不便的。以下将详细探讨Session丢失的可能原因及解决策略。 1. **Session超时**:服务器默认设置了一个Session的...
4. 安全性:Session信息存储在服务器端,相对安全,但若Session ID被窃取,可能会导致安全性问题。 5. 依赖客户端:如果用户禁用了Cookie,或者使用了隐私模式,Session的实现会受到影响。 为了克服Session的一些...
然而,当涉及到跨域时,`iframe` 遇到的问题之一就是无法正常访问父页面或被嵌入页面的`session`。这是因为浏览器的同源策略(Same-Origin Policy)限制了不同源之间的交互,包括`session`和`cookie`。 同源策略是...
在实际使用过程中,用户可能会遇到各种问题,其中"phpcms web发布session过期问题"是一个常见的困扰。这个问题通常出现在用户登录后,在一段时间不操作或者刷新页面时,系统提示session已过期,导致用户需要重新登录...
在探讨“IFrame中Session丢失的解决...通过上述策略的应用,可以有效解决IFrame环境下Session丢失的问题,提高Web应用的稳定性和安全性。然而,开发者还需持续关注浏览器更新和隐私政策变化,以适应不断发展的Web环境。
然而,随着网站规模的扩大和用户数量的增长,Session管理可能会遇到一系列问题。本文将探讨这些问题,并提供相应的解决方案。 一、Session超时问题 在ASP.NET中,Session默认会在20分钟后过期。如果用户长时间无...
### 一般应用程序中如何处理Web页面的Session问题 在Web开发过程中,Session管理是一项至关重要的技术,它确保了用户在多次请求之间的状态得以保存。本文将深入探讨在使用一般应用程序处理Ajax请求时如何有效地获取...
【标题】讲解各种Session 在计算机编程特别是Web开发中,Session是用于跟踪用户状态的一种机制。它是服务器端存储用户信息的方式,确保用户在不同页面请求间维持某种状态。本篇文章将深入探讨Session的工作原理、...
现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不
为了解决这个问题,Vista及后续版本的Windows将服务单独隔离到Session 0,而用户应用程序则运行在独立的Session中,提高了系统的安全性。 当尝试让服务与桌面进行交互时,如在服务启动时弹出对话框,会发现由于...
本文将详细介绍Spring Session与Redis集成,以及如何自定义Session来应对分布式环境中的Session不同步问题。 **1. Spring Session概述** Spring Session是一个开放源码项目,它扩展了Spring MVC,提供了一种统一的...
本文档旨在介绍如何使用 Spring Boot、Shiro 和 Redis 实现分布式 session 共享,以解决 Web 应用程序的登录 session 统一问题。 2. 相关依赖 在实现 session 共享之前,需要在项目中引入相关依赖项,包括: * ...
如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId...