使用春季会话的序列化异常



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

独立运行的应用程序运行良好,但我最近开始通过SpringSession实现会话复制。当会话被持久化到会话存储时,我会得到一个不可序列化的异常。

由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);
}
[...]
}

如果我在类定义中添加"implements Serializable",错误就会改变:

由java.io.NotSerializableException引起:org.springframework.dao.support.PersistenceExceptionTranslationInterceptor

我不熟悉JSF,但从我所读到的内容来看,期望您的所有JSF类都是可序列化的。当我的DAO需要JdbcTemplate的实例时,我如何使它可序列化?

正如@Selaron所指出的,问题是JSF控制器上的非瞬态springbean。不要那样做。

相关内容

  • 没有找到相关文章

最新更新