免费做片头的网站,一起做网店网站,旅游网站网页设计论文,做的网站怎么放到网上简述由于开发是单机项目#xff0c;但是到了配置负载均衡的集群中就发生了问题#xff0c;使用账号登录后又跳回主页面。我分析了原因是负载均衡配置的跳转是每次访问都会切换服务#xff0c;所以在A机器登录后#xff0c;再次访问B机器找不到有登录状态的session#xff…简述由于开发是单机项目但是到了配置负载均衡的集群中就发生了问题使用账号登录后又跳回主页面。我分析了原因是负载均衡配置的跳转是每次访问都会切换服务所以在A机器登录后再次访问B机器找不到有登录状态的session而我的过滤器里面配置了不登录就会跳到首页所以在B机器上给跳回了首页这样就会一直登陆失败。解决办法就是配置session共享看了大多数的session共享都是用的Redis做的但是本着不增加项目架构复杂度的想法便使用了本身的项目数据库–oracle。使用了spring提供的session共享方案spring-session。spring-session的Github地址https://github.com/spring-projects/spring-session数据库表使用JDBC做session共享需要在对应库中增加表里面包含了各种库的对应的表信息可参考 https://github.com/spring-projects/spring-session/tree/master/spring-session-jdbc/src/main/resources/org/springframework/session/jdbc这里是2.x版本的sql如果是1.x版本是没有PRIMARY_ID字段的要在下面maven依赖中选择对应的版本不然运行报错。CREATE TABLE SPRING_SESSION (PRIMARY_ID CHAR(36) NOT NULL,SESSION_ID CHAR(36) NOT NULL,CREATION_TIME NUMBER(19,0) NOT NULL,LAST_ACCESS_TIME NUMBER(19,0) NOT NULL,MAX_INACTIVE_INTERVAL NUMBER(10,0) NOT NULL,EXPIRY_TIME NUMBER(19,0) NOT NULL,PRINCIPAL_NAME VARCHAR2(100 CHAR),CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID));CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);CREATE TABLE SPRING_SESSION_ATTRIBUTES (SESSION_PRIMARY_ID CHAR(36) NOT NULL,ATTRIBUTE_NAME VARCHAR2(200 CHAR) NOT NULL,ATTRIBUTE_BYTES BLOB NOT NULL,CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE);Maven依赖这里对应的找到2.x版本的依赖如果没有maven要引入如下jarspring-jdbc、spring-session-core、spring-contextorg.springframework.sessiongroupIdspring-session-jdbcartifactId2.0.2.RELEASEversiondependencyapplication.xml配置beanclassorg.springframework.jdbc.datasource.DataSourceTransactionManagerbeanweb.xmlspring session通过自定义一个filter通过filter职责链将用自己定义的request替换httpservletrequest从而使用自己httpsession。配置一下Filter把他放在最前面使其优先执行springSessionRepositoryFilterfilter-nameorg.springframework.web.filter.DelegatingFilterProxyfilter-classfilterspringSessionRepositoryFilterfilter-name/*url-patternfilter-mapping总结整和共享session步骤增加数据库表添加依赖配置spring的xml增加过滤器让request获取spring-session-jdbc中的session。整合之后可以登录到项目中并在数据库的SPRING_SESSION、SPRING_SESSION_ATTRIBUTES表中看到相应的信息而session存活时间也与原来相同不影响其他逻辑。参考官方文档XML配置spring session jdbc实现session共享