Я пытаюсь развернуть приложение wicket-6 в кластере kubernetes, чтобы повысить доступность и немного лучше распределить нагрузку на веб-приложение.
Это веб-приложение с сохранением состояния в том смысле, что я расширяю AuthenticatedWebSession. Именно этот объект сеанса я хотел бы сохранить в распределенном кэше, таком как Apache Ignite, чтобы мне не требовался липкий сеанс на моем балансировщике нагрузки.
Проблема в том, что моя реализация внедрила AuthenticationManager в AuthenticatedWebSession, поэтому authManager можно использовать в методе аутентификации (имя пользователя, пароль).
@SpringBean(name = "webAuthenticationManager")
private AuthenticationManager authManager;
@Override
public boolean authenticate(String username, String password) {
boolean authenticated = false;
try {
authentication = authManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
authenticated = true;
} catch (AuthenticationException e) {
authenticated = false;
}
return authenticated;
}
Caused by: org.apache.ignite.binary.BinaryObjectException: Failed to read field [name=authManager]
at org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:192)
at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:875)
Проблема возникает, когда Ignite пытается сериализовать / десериализовать поле authManager. На самом деле мне не нужен сам менеджер для хранения в кеше.
Есть ли способ повторно внедрить этот объект при восстановлении сеанса из кэша?
Может быть, я справляюсь с этим совершенно неправильно. Доброе чувство, будто я спускаюсь сюда по кроличьей норе:)