Redis会话已创建,但属性存储在本地

时间:2016-01-29 18:04:29

标签: spring session redis

访问网页后,会在redis中创建会话,但我设置的属性值不会显示。此外,如果我从数据库中删除会话,我设置的会话变量仍然存在,这意味着属性存储在本地。

的pom.xml

   <org.springframework-version>4.1.6.RELEASE</org.springframework-version>
    <spring-webmvc-version>4.0.0.RELEASE</spring-webmvc-version>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <!-- -->  <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${org.springframework-version}</version>
        </dependency> 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>

       <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.6.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.4.2</version>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.8.0</version>
        </dependency>
        <!--  -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
            <version>1.0.2.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>4.0.3.RELEASE</version>
        </dependency>
<!--  -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>4.0.3.RELEASE</version>
        </dependency>

myFilter

@Component(value = "myFilter")
public class myFilter  implements Filter {
    private static final Logger logger = LoggerFactory.getLogger(SessionVerificationFilter.class);

    public static ClassPathXmlApplicationContext context;

    @Autowired
    private Environment env;

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse)res;        
        logger.info("Host Name in SessionVerificationFilter: "+request.getServerName());
        printSession(request);
        printHeaders(request);
        request.getSession().setAttribute("test", "test");
        ...

context.xml中

<!--  -->
    <beans:bean id="RedisHttpSessionConfiguration" 
        class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration" />
    <beans:bean
        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
        p:port="6379" />

    <bean id="httpSessionStrategy"
        class = "org.springframework.session.web.http.CookieHttpSessionStrategy"
        p:cookieName="SAMSessionId"/>
    <bean 
        class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"
        p:httpSessionStrategy-ref="httpSessionStrategy" />

的web.xml

    <filter>
        <filter-name>myFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>myFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping> 
    <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>

在我的会话上运行hgetall后:

127.0.0.1:6379> hgetall spring:session:sessions:469e415a-4b03-4038-8777-4d292bf1
5474
1) "maxInactiveInterval"
2) "\xac\xed\x00\x05sr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02
\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b
\x02\x00\x00xp\x00\x00\a\b"
3) "creationTime"
4) "\xac\xed\x00\x05sr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x
01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x
00\x00xp\x00\x00\x01R\x8eC\xa15"
5) "lastAccessedTime"
6) "\xac\xed\x00\x05sr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x
01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x
00\x00xp\x00\x00\x01R\x8eC\xa15"
127.0.0.1:6379>

0 个答案:

没有答案