【问题标题】:How to store JSF session in redis?如何将 JSF 会话存储在 redis 中?
【发布时间】:2015-12-16 21:05:26
【问题描述】:

我有一个 JSF - Primefaces 应用程序,我想使用 tomcat 8 将 http 会话存储在 redis 中。我该怎么做? https://github.com/jcoleman/tomcat-redis-session-manager 不适用于 tomcat 8。

为 http 会话拥有一个存储(redis 或其他)以将 tomcat 放入集群的最佳解决方案是什么?

我尝试了 spring session 项目http://projects.spring.io/spring-session/,但 JSF 失败了。

最好的问候

【问题讨论】:

  • 我建议你试试projects.spring.io/spring-session 它支持redis,但是替换了容器会话管理。
  • 序列化会话并存储它?如果您希望会话复制设置集群元素并启用增量管理器。
  • 我已经测试了 spring-session,但它在我的项目中失败了,我已经打开了一个关于我的问题 github.com/spring-projects/spring-session/issues/29 的问题。而且我不想使用增量管理器,而是使用大型机器集群的解决方案。

标签: spring tomcat jsf redis


【解决方案1】:

您可以将嵌入式 tomcat 与 spring boot 一起使用。然后你只需为 redis 和 JoinFaces 添加依赖项,这是一个使用 springboot 启用 JSF 的库。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <version>1.5.4.RELEASE</version>
    </dependency>

    <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session</artifactId>
            <version>1.3.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.joinfaces</groupId>
        <artifactId>jsf-spring-boot-starter</artifactId>
    </dependency>

还有一个非常简单的配置

spring.session.store-type=REDIS
#REDIS
spring.redis.host=localhost
spring.redis.port=6379

但我必须警告你,如果你想使用带有注入 JdbcTemplate 的 SessionScoped 或 ViewScoped bean,那么你最终会遇到异常。

org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.io.NotSerializableException: org.springframework.jdbc.core.JdbcTemplate

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 2019-03-10
    • 2015-01-14
    • 1970-01-01
    • 2014-05-20
    • 2019-05-08
    • 2015-02-20
    • 2018-10-06
    • 1970-01-01
    相关资源
    最近更新 更多