Исключение сериализации с использованием весенних сессий

Приложение 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. Не делай этого.

Другие вопросы по тегам