동일한 도메인에서 봄 세션에서 단일 로그온을 달성하기 위해

세션 세션 관리

  웹 프로젝트 개발에서, 세션 세션 관리 레코드에게 사용자의 상태 또는 관련 데이터를 저장하기위한 매우 중요한 부분이며, 일반적으로 세션이 컨테이너 (바람둥이) 저장 및 관리에 대한 책임을 언급하지만, 프로젝트 배포의 경우 여러 톰캣은 큰 문제가 다음 세션 관리 1 세션은 서버에 사용자가 로그인 한 톰캣 같은 여러 톰캣 공유하지만 할 수없는 경우 톰캣 B 인해 톰캣 B에로드 밸런싱 점프 서버와 실패가 아니라 사용자의 로그인 정보, 세션, 사용자 종료는 로그인, 2, 컨테이너가 종료하거나 세션의 실패로 이어질 것 바람둥이 세션을 다시 시작하면, 프로젝트가 여러 바람둥이에 배포 그러므로, 당신이 공유 세션을 해결하기 위해 필요 문제;

프로필

하나의 pom.xml
 <의존성> 
    <의 groupId> org.springframework.session </의 groupId> 
    <artifactId를> 스프링 세션 데이터 레디 스 </ artifactId를> 
    <version>은 1.3.1.RELEASE </ 버전> 
</ 의존성> 

2 web.xml의
   <필터> 
        <필터 이름> springSessionRepositoryFilter </ 필터 이름> 
        <필터 클래스> org.springframework.web.filter.DelegatingFilterProxy </ 필터 클래스> 
    </ 필터> 
    <필터 매핑> 
        <필터 - 이름> springSessionRepositoryFilter </ 필터 이름> 
        <URL 패턴> *. 할 </ URL 패턴> 
    </ 필터 매핑> 

  <수신기>  
        <청취자 클래스> org.springframework.web.context.ContextLoaderListener </ 청취자 클래스>
    </ 청취자> 
    <컨텍스트 PARAM>
        <PARAM 이름>는 contextConfigLocation </ PARAM 이름> 
        <PARAM 값> 
            클래스 경로 : applicationContext.xml 
        </ PARAM 값> 
    </ 상황 PARAM> 

3 applicationContext.xml
     <컨텍스트 : 주석 - 설정 /> 
    <! -初始化一切봄 세션准备,且把springSessionFilter放入IOC -> 
    <콩 ID = "redisHttpSessionConfiguration" 클래스 = "org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> 
        <속성 이름 = "maxInactiveIntervalInSeconds"값 = "300"/> 
    </ 빈> 
  <! -配置쿠키信息-> 
    <콩 클래스= "org.springframework.session.web.http.DefaultCookieSerializer"ID = "defaultCookieSerializer"> 
        <속성 명 = "cookieName"값 = "SESSION_NAME"/> 
        <속성 명 = "는 domainName"값 = "wangjun.com"/> 
        <속성 이름 = "useHttpOnlyCookie"값 = "진정한"/> 
        <속성 이름 = "cookiePath"값 = "/"/> 
        <속성 이름 = "cookieMaxAge"값 = "31536000"/> 
    </ 빈> 
  <! -配置레디 스连接池信息->  
    <콩 ID = "jedisPoolConfig" 클래스 = "redis.clients.jedis.JedisPoolConfig"> 
        <속성 이름 = "maxTotal"값 = /> "(20)는" 
    </ 빈> 
  ! 레디 스 접속 설정 정보 - -> < 
    <빈 ID = "jedisConnectionFactory" 클래스= "org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> 
        <속성 명 = "여기서 hostName"값 = "127.0.0.1"/> 
        <속성 명 = "포트"값 = "6379"/> 
        <속성 이름 = "poolConfig"REF = "jedisPoolConfig"/> 
    </ 콩>

 

코드 테스트

공용  클래스 SessionServlet는 연장 HttpServlet을가 { 
 
    보호  공극 의 doPost (HttpServletRequest 요청, HttpServletResponse 응답) 발생 ServletException을 IOException을 {
         .doGet (요청, 응답); 
    } 
 
    보호  공극 의 doGet (HttpServletRequest의 요청 HttpServletResponse를 대응) 발생 ServletException을 IOException을 { 
        문자열 sesssionID = . request.getSession ()를 getId ();
        // 部署两份,把这个地方8081改成8080就行了,只是为了区分 
        . response.getWriter () ( "8081 서버 세션 ID"+ 쓰기 sesssionID을); 
    } 
}

 

추천

출처www.cnblogs.com/FondWang/p/11711468.html