методе вылетает эксепшн. Как исправить?
Метод такого плана:
@Async
public void test() {
UserDetailsImpl user = (UserDetailsImpl) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
вылетает эксепшн
new Thread(new Runnable() {
@Override
public void run() {
код............
}).start();
}
Какой эксепшн
налпоинтер
Security Context пустой. Поток то другой
Можно пользовать SecurityContextDelegatingTaskExecutor ЕМНИП. В доке спринг секурити есть раздел про поддержку многопоточности
Спасибо, пошёл читать)
допускаю что дело в том что вы создали отд поток, а в нем нет нужных ThreadLocals в которых все лежит все эти контексты (транзакции, секьюрити) же не магия..
Да, пусто было. Павел правильно подсказал с DelegatingSecurityContextAsyncTaskExecutor, подправил конфиг, заработал
Все в спринге чз гугл быстрее чинится чем через понимание что написано в ошибке(
угу, пока у меня именно так..
Обсуждают сегодня