2015-09-19 144 views
0

我有一個JSF - Primefaces應用程序,我想用tomcat 8在redis中存儲http會話。我該怎麼做? https://github.com/jcoleman/tomcat-redis-session-manager不支持tomcat 8.如何在redis中存儲JSF會話?

什麼是最好的解決方案有一個存儲(redis或其他)的http會話將tomcat放入羣集?

我嘗試了春季會議項目http://projects.spring.io/spring-session/,但它失敗了,並且JSF。

問候

+0

我建議你嘗試http://projects.spring.io/spring-session/它支持redis,但是會替換容器會話管理。 – tsachev

+0

序列化會話並存儲它?如果您希望會話複製設置羣集元素並啓用增量管理器。 – Stefan

+0

我已經測試了spring-session,但是在我的項目中失敗了,我已經打開了有關我的問題https://github.com/spring-projects/spring-session/issues/29的問題。我不想使用增量管理器,而是一個擁有大量機器的解決方案。 – louvelg

回答

0

您可以使用嵌入式tomcat的彈簧啓動。然後,您只需添加用於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 

但是,如果你想使用SessionScoped或ViewScoped豆與注射的JdbcTemplate比你會落得一個例外,我必須警告你。

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