Я изменяю однопоточное выполнение метода многопоточным с помощью ExecutorService. он вызывает SecurityContextHolder внутри, который выдает исключение:
Причина: java .lang.Exception: объект аутентификации не найден в контексте безопасности. на com.LoggedInUser.getLoggedInUser (LoggedInUser. java: 25) на com.Controller.submitRate (RateController. java: 242)
Мой код:
method(){
Future<Results> future = executor.submit(new callableClass(form, request));
if (null != future.get()) {
rates = future.get();
}}
}
class callableClass implements Callable<RateResults> {
private Form form;
private HttpServletRequest request;
public RateShippmentCaller(Form form, HttpServletRequest request) {
super();
this.form = form;
this.request = request;
}
@Override
public Results call() throws Exception {
return controller.submit(form, request);
}
}
submit(form, request){
LoggedInUser.getLoggedInUser()
}
class LoggedInUser{
getLoggedInUser(){
SecurityContext **secCtx** = SecurityContextHolder.getContext();
Authentication authentication = secCtx.getAuthentication();
if (authentication == null) {
throw new Exception("Authentication object not found in security context.");
}
}
}
Пожалуйста, сообщите Я знаю, как избежать исключения. secCtx возвращает ноль.