カスタムログニモジュールはステートフルなEJBになることができますか?

StackOverflow https://stackoverflow.com/questions/9317145

質問

私は使っている jboss-as-7.1.0.Final-SNAPSHOT データベースを使用するカスタムログインモジュールのセットアップを試みます。 AS7ドキュメントの指示に従って、Standalone.xmlで新しいセキュリティドメイン、jboss-security.xmlのセキュリティドメイン、web.xmlのセキュリティ制約を構成し、jbossのロギングをトレースに設定して、私のことがわかります。カスタムログルモジュールメソッドは正常に呼び出されています(例:login()、authenticate())。

ログインモジュールで手動トランザクションの境界を使用したくないので、ログインモジュールがEAステートフルなEJBになれば素晴らしいでしょう。

を見てください JBoss AS7:セキュリティドメインモデル 記事、言う:

fqcnをコード属性に記述するだけで、すぐに動作するはずです。

カスタムログインモジュールクラスファイルを配置するには、ジャーに配置して、次のどちらを置くことができます。

Webアーカイブ(WAR)またはEJB JARまたはEnterprise Archive(EAR)のアプリケーションクラスパスまたはモジュールディレクトリの下の個別のモジュール。

空は、アプリケーションのEJBモジュール内を含め、ログインモジュールを配置できる場所の制限のようです。これは、私のカスタムログインモジュールがステートフルなEJBになる可能性があることを意味しますか? 「いいえ」と言っているものは何も読んでいません。ただし、ステートフルなEJBが挿入されたマネージドビーンズと注入されたEntityManagerが注入されていないように、ログインモジュールを展開すると。メソッドを呼び出しようとすると、nullpointerexceptionを取得します。

org.jboss.security.auth.spi.databaseerverloginmoduleを見てみましょう。データベースアクセスがそこでどのように処理されるかを見たかったのです。 DataSource Lookupは、initialContextを介して行われます

InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(dsJndiName);
conn = ds.getConnection();

トランザクションはすべて手動で処理されます。可能であれば、このアプローチを使用したくありません。

ステートフルなEJBを使用できますか?それとも、これへのアプローチに基づいてベースを離れていますか?

役に立ちましたか?

解決

質問に答えられました JBossコミュニティ 次のように:

  • 「ステートフルEJBとログインモジュールのそれぞれのライフサイクルがまったく異なるため、カスタムログインモジュールはステートフルなEJBではありません。 「

  • カスタムログインモジュールはCDIを使用できないため、マネージドビーンを注入できません。ある人は、Jaasが管理された豆を注入する手段を提供した場合、それはかなりクールだと言い、誰かがJAAS仕様を更新する必要があると言いました。これを許可するために。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top