У меня есть метод, который принимает объект сеанса для связи с внешней системой.Объект сеанса содержит имя пользователя и токен сеанса.Если внешняя система не распознает маркер сеанса, генерируется исключение.В этом случае я хочу войти с переданным именем пользователя, создать новый объект сеанса и вызвать оригинальный метод с новым объектом сеанса, содержащим действительный токен сеанса.
Я создал Listener, расширяющий RetryListenerSupport.Я аннотировал метод с помощью @Retry и указал моего слушателя как слушателя.Но в методе onError моего слушателя я не могу получить доступ к аргументам метода.
@Value
public class Session {
private final String username;
private final String sessionToken;
}
@Component
public class EmployeeRetryListener extends RetryListenerSupport {
@Override
public <T, E extends Throwable> void onError(RetryContext context,
RetryCallback<T, E> callback, Throwable throwable) {
if (throwable instance of UnknownSessionException) {
// Here I want to access the arguments of the createEmployee method
}
super.onError(context, callback, throwable);
}
}
@Service
public class EmployeeService {
@Retryable(listeners = "employeeRetryListener")
public void createEmployee(Session session, String employeeName) throws UnknownSessionException {
}
}
Я хочу знать имя пользователя в экземпляре сеанса, с которым вызывается метод.И я также хочу изменить экземпляр Session для обновления до sessionToken.