Я следовал коду BalusC для управления аутентификацией пользователей в Java EE 6 (http://balusc.blogspot.com/2013/01/apache-shiro-is-it-ready-for-java-ee-6.html), который работает отлично, если я останусь в том же веб-контейнере.
Я столкнулся с проблемой, которая, возможно, кто-нибудь может мне помочь. При внедрении EJB, который находится в веб-контейнере, SecurityUtils.getSubject()
работает нормально из любого метода этого EJB.
Проблема в том, что когда я пытаюсь сделать это на внедренном EJB из другого контейнера (даже на ejb jar в том же EAR).
The use case is:Вызвано: org.apache.shiro.UnavailableSecurityManagerException: нет SecurityManager, доступного для вызывающего кода, либо привязанного к org.apache.shiro.util.ThreadContext, либо как статический синглтон vm. Это недопустимая конфигурация приложения.
Управляемый bean-компонент A
с внедренным сеансовым bean-компонентом без сохранения состояния B
. Класс A
находится в myApp.war, класс B
находится в myApp.ejb, оба внутри myApp.ear. Я звоню SecurityUtils
из класса B
.
Есть ли у вас какие-либо подсказки о том, как решить эту проблему?
Я использую JSF 2, Java EE 6, JBoss 7.1.