3

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 を実行しています。

4

2 に答える 2