java项目使用spring session实现共享session

前言:因为搭建了nginx+Tomcat集群,出现了个问题就是登录不了,通过百度发现需要做tomcat的session共享。然后session共享方法具体参考https://blog.csdn.net/u012383839/article/details/79756368

这里先记录一下最终结果及过程中遇到的一些问题。项目框架使用的是jeecg开源框架(非maven版的)。

基本配置

jeecg框架已经有了redis的基本配置了,所以我只是在它基础上进行一些改动。

  • 添加依赖包

因为jeecg已经有了一些jar包,如:jedis-2.9.0.jar、commons-pool2-2.4.2.jar、spring-data-redis-1.6.2.RELEASE.jar。在原有基础上添加spring-session-1.3.5.RELEASE.jar包。

  • 在配置文件redis.xml添加redisHttpSessionConfiguration


     

 maxInactiveIntervalInSeconds说明:以秒为单位设置session的最大存活时间,默认为1800秒,设置为负数代表永不过期。

  • 在web.xml添加springSessionRepositoryFilter拦截器,要放到最前面



  demo
  
    
        springSessionRepositoryFilter
        org.springframework.web.filter.DelegatingFilterProxy
    
    
        springSessionRepositoryFilter
        /*
    
    

 

问题一

在上述配置完后启动报异常:org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'dialect' defined in URL .....ROOT/WEB-INF/classes/spring-mvc.xml]: Could not resolve placeholder 'jdbc.dbType' in string value "${jdbc.dbType}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.dbType' in string value "${jdbc.dbType}"

问题描述:不知道为啥会报这异常,网上都是说什么XML配置有问题、什么jdk版本啊、什么bean冲突啊等等。感觉不是这样的(都看不懂),我试过了把这段代码注释掉后再启动就没有该异常了,但不知道注释后会不会对其他模块有什么影响。

解决方法:把原来在springMVC.xml里面的dialect定义的bean移到spring-hibernate.xml里。

 

启动后没啥异常和报错。然后打开系统登录,可以在redis服务器看到保存的session。

java项目使用spring session实现共享session_第1张图片

最后上代码。

redis.xml



    
    
    
        
        
        
        
        
        
        
    
    
    
    
        
        
        
        
        
        
    
    
	
	 
    	 
    	
        
        
            
        
        
        
            
        
        
        
            
        
        
        
            
        
  	
  	
  	
   
      
   

spring-mvc.xml



	
	
	
    
	

spring-mvc-hibernate.xml



	
	
	
	
		
	
	

web.xml



  ddd
  
    
        springSessionRepositoryFilter
        org.springframework.web.filter.DelegatingFilterProxy
    
    
        springSessionRepositoryFilter
        /*
    

 
  
    404
    /webpage/common/404.htm
  
  
    30
  
  
    /index.jsp
  

可能电脑环境和代码框架不同,所以这个配置不一定适合。如有更好的方法可以一起讨论讨论。

你可能感兴趣的:(java)