项目使用的是SpringMVC+hibernate,由于部署使用nginx代理发布多台服务(多个tomcat),使用Spring-Session进行处理session,用redis托管Session。
下面为处理方式步骤:
1.如果项目之前没有整合过spring-data-redis的话,这一步需要先做,在maven中添加这几个依赖:
<!-- config redis data and client jar --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.6.4.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> <!-- spring session configure --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session</artifactId> <version>1.2.0.RELEASE</version> </dependency>
2. 再在applicationContext.xml中添加以下bean,用于定义redis的连接池和初始化redis模版操作类,自行替换其中的相关变量。
<context:property-placeholder location="classpath*:redis/redis.properties" ignore-unresolvable="true" /> <!-- redis 相关配置 --> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxWaitMillis" value="${redis.maxWait}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> </bean> <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.password}" p:pool-config-ref="poolConfig" p:database="${redis.database}" /> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory" /> </bean> <!-- 将session放入redis --> <bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> <property name="maxInactiveIntervalInSeconds" value="1800" /> </bean>
3. 然后是在web.xml中添加一个session代理filter,通过这个filter来包装Servlet的getSession()。将配置放置到最前面,让其具有最优先地位。
<filter> <filter-name>springSessionRepositoryFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSessionRepositoryFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
测试环节:
1. 开启两个tomcat,eg:localhost:8888和localhot:8080 然后运行起来。
2.开开一个浏览器(一定注意使用同一个浏览器),打开8080的一个tab,然后登录,进入个人中心(需要登录才能进入的界面)。登录之后,将连接拷贝到另外一个浏览器tab,端口改为8888,发现不用登录就已经登录进去了。
3.查看redis,Mac下可以使用rdm工具
相关推荐
为了解决这个问题,Spring Session提供了一种优雅的解决方案,特别是结合Redis作为持久化存储时,可以实现高效的分布式Session管理。本文将详细介绍Spring Session与Redis集成,以及如何自定义Session来应对分布式...
spring session + redis 实现web工程的session共享,本配置使用maven导入相关jar包,非maven项目可自行下载对应jar包,摘取技术点相关配置即可
commons-pool2-2.3.jar,jedis-2.8.0.jar,spring-data-redis-1.6.0.RELEASE.jar,spring-session-1.1.1.RELEASE.jar,Spring-data-redis(Version 1.6.0.RC1)中文版.pdf
首先,Spring Session是一个开源项目,由Pivotal Software开发,它扩展了Spring MVC,提供了对HTTP会话(session)的管理支持。Spring Session的核心思想是将session数据从传统的JVM内存中移出,存储到一个独立的...
本项目“Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager”整合了Spring Boot、Spring Security、Spring Session、Redis、Mybatis-Plus以及Swagger等技术,旨在构建一个强大的、安全的、具有...
SpringBoot+MyBatis+SpringSession+Redis实现session共享及单点登录开发实例
首先,Spring Session是一个用于管理用户会话信息的项目,它能够将用户会话数据存储在外部存储中,而不是存储在服务器的内存中。这对于分布式系统、负载均衡、无状态的微服务架构等场景尤其有用。通过Spring Session...
然后,我们需要配置Spring Boot以使用Spring Session,这可以通过在`application.properties`或`application.yml`文件中指定Session存储类型(例如:`spring.session.store-type=redis`)。 2. **配置Redis连接**:...
6. **事务支持**:虽然Redis本身不支持ACID事务,但Spring Data Redis提供了有限的事务管理能力,比如`RedisTransactionManager`,可以在多个操作之间保持一致性。 7. **Redis Cache**:Spring框架的缓存抽象可以与...
总之,这个压缩包提供的"spring-session+spring+redis"组合,是Java Web开发中实现高可用分布式会话管理的一种常见解决方案。通过使用Redis作为存储,结合Spring Session的便捷性和Jedis的高效访问,可以在复杂环境...
SpringSession 是一个开源项目,由Pivotal Software开发,它扩展了Spring Framework的功能,使得在分布式环境中管理用户会话(Session)变得更加简单。这个项目的主要目标是解决在微服务架构中,由于请求可能会被...
"nginx+spring-session+redis 实现session共享"是分布式系统中常见的解决方案,它结合了Nginx的负载均衡能力、Spring-Session的数据持久化特性以及Redis的高可用性,有效地解决了分布式环境下的会话管理问题。...
赠送jar包:spring-session-data-redis-2.0.4.RELEASE.jar; 赠送原API文档:spring-session-data-redis-2.0.4.RELEASE-javadoc.jar; 赠送源代码:spring-session-data-redis-2.0.4.RELEASE-sources.jar; 赠送...
总之,Spring Session结合Redis提供了一种优雅的方式来管理和扩展Web应用的会话机制,对于构建高可用、高性能的现代Web服务至关重要。在开发过程中,确保正确配置和使用这两个组件,将大大提升系统的稳定性和用户...
首先,我们需要理解Spring Boot中的Session管理。默认情况下,Spring Boot使用内存中的HttpSession来存储用户会话信息,但这种方式在多服务器环境下可能导致Session不一致。为了解决这个问题,我们可以借助Redis这个...
Redis 和 SpringSession 是在分布式系统中管理用户会话(Session)的两个重要工具。Redis 是一个高性能的键值数据存储系统,常用于缓存和消息代理。SpringSession 是 Spring 生态系统的一个扩展,它允许我们在分布式...
赠送jar包:spring-session-data-redis-2.0.4.RELEASE.jar; 赠送原API文档:spring-session-data-redis-2.0.4.RELEASE-javadoc.jar; 赠送源代码:spring-session-data-redis-2.0.4.RELEASE-sources.jar; 赠送...
Spring-Redis-Session 是一个基于 Spring 框架的会话管理模块,它使用 Redis 作为会话存储介质,提供了灵活的会话管理机制。在本文中,我们将详细介绍 Spring-Redis-Session 的自定义 key 和过期时间的实现原理和...
标题 "Spring Boot + Spring Session + Redis" 涉及到的是在Java开发中,使用Spring Boot框架集成Spring Session和Redis来实现会话管理的技术方案。这个解决方案主要解决分布式系统中的session共享问题,使得用户在...
`SpringSession` 是一个优秀的框架,它提供了一种优雅的方式来进行Session管理,尤其是跨服务器的Session共享。配合`Redis`作为存储后端,我们可以构建高可用、可扩展的Session共享解决方案。下面将详细解释`Spring...