Java EE 6 ( http://balusc.blogspot.com/2013/01/apache-shiro-is-it-ready-for-java-ee-6.html ) でユーザー認証を管理するために BalusC コードに従っていました。同じ Web コンテナーにとどまれば素晴らしいことです。
おそらく誰もが私を助けることができるという問題に直面しています。Web コンテナに存在する EJB を注入すると、SecurityUtils.getSubject()
その EJB のどのメソッドからでも正常に動作します。
問題は、別のコンテナー (同じ EAR 内の ejb jar であっても) から注入された EJB でそれを実行しようとしたときです。
私が得るエラーは次のとおりです。使用例は次のとおりです。原因: org.apache.shiro.UnavailableSecurityManagerException: org.apache.shiro.util.ThreadContext にバインドされているか、vm 静的シングルトンとしてバインドされている、呼び出し元のコードにアクセスできる SecurityManager がありません。これは無効なアプリケーション構成です。
A
ステートレス セッション Bean が注入されたマネージド Bean B
。クラスA
は myApp.war にあり、クラスB
は myApp.ejb にあり、どちらも myApp.ear 内にあります。SecurityUtils
クラスから呼び出していB
ます。
これを解決する方法の手がかりはありますか?
JSF 2、Java EE 6、JBoss 7.1 を実行しています。