使用spring-sessions的序列化异常

时间:2018-12-03 18:15:35

标签: spring-boot jsf spring-session joinfaces

Spring-Boot中的Primemes / Joinfaces JSF应用程序。

App在独立运行时运行良好,但是我最近开始通过Spring-Session实现会话复制。当会话持久化到会话存储区时,出现不可序列化的异常。

  

由于:java.io.NotSerializableException:   com.company.application.service.dao.security.RoleBasedSecurityDao $$ EnhancerBySpringCGLIB $$ 9de506c

看该错误消息,看起来序列化异常不是针对类本身,而是针对类所拥有的东西。它唯一拥有的就是JDBCTemplate。

@Repository
public class RoleBasedSecurityDao {
    private final static Logger log = LoggerFactory.getLogger(RoleBasedSecurityDao.class);

    private NamedParameterJdbcTemplate jdbcTemplate;

    @Autowired
    @Qualifier("dataSource")
    public void setDataSource(DataSource dataSource) {
        jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
    }
[...]
}

如果我在类定义中添加“可序列化的实现”,则错误会更改:

  

由于:java.io.NotSerializableException:   org.springframework.dao.support.PersistenceExceptionTranslationInterceptor

我对JSF并不熟悉,但是据我所读,我希望您的所有JSF类都是可序列化的。当需要一个JdbcTemplate实例时,如何使DAO可序列化?

1 个答案:

答案 0 :(得分:0)

正如@Selaron指出的那样,问题是JSF控制器上的非临时性Spring bean。不要那样做。