Исключение сериализации с использованием весенних сессий
Приложение JSF Primefaces/Joinfaces в Spring-Boot.
Приложение работает нормально, работает автономно, но я недавно начал внедрять репликацию сеансов через 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);
}
[...]
}
Если я добавлю "реализацию Serializable" в определение класса, ошибка изменится:
Вызывается: java.io.NotSerializableException: org.springframework.dao.support.PersistenceExceptionTranslationInterceptor
Я не знаком с JSF, но из того, что я прочитал, можно ожидать, что все ваши классы JSF сериализуемы. Как я могу сделать сериализуемый мой DAO, когда ему нужен экземпляр JdbcTemplate?
1 ответ
Как отметил @Selaron, проблема заключалась в непереходных пружинных компонентах на контроллерах JSF. Не делай этого.