Я только что добавил ExecutionHandler
в свой конвейер сервера непосредственно перед моим основным обработчиком бизнес-логики, как рекомендовано в документации.
Я использую Apache Shiro http://shiro.apache.org/ для безопасности. Он работал нормально, пока я не добавил ExecutionHandler
.
Вопрос :
Контекст выполнения Широ связан с текущим потоком, в котором вы получаете объект Subject
. Таким образом, если Subject
получено в рабочем потоке, но бизнес-логика выполняется в отдельном управляемом потоке ExecutionHandler
, тогда два контекста выполнения не будут связаны, насколько это касается Широ. Таким образом, Широ в потоке ExecutionHandler
не сможет понять, что Subject
действительно аутентифицирован. Итак, я получаю ошибки аутентификации.
Можно связать данный Subject
с Runnable
перед передачей его Executor.execute()
, чтобы сохранить контекст безопасности. Смотри: http://shiro.apache.org/subject.html
Исходя из этого, я думаю, что нужно найти способ связать текущий Shiro Subject
с ExecutionHandler
Runnable
.
Я все еще пытаюсь полностью понять реализации ExecutionHandler
и OrderedMemoryAwareThreadPoolExecutor
.
В основном мне нужно позвонить subject.associateWith(aRunnable)
непосредственно перед тем, как aRunnable
будет передано Executor.execute(aRunnable)
.
У кого-нибудь есть мысли о том, где / как я мог бы подключить Широ к миксу?
Спасибо,
Matt