1

JSF 2.2 webapp には、タスクを実行するためにリクエスト スコープ Bean をインスタンス化する必要があるコードを定期的に実行する、スケジュールされたスレッド エグゼキュータ サービスがあります。クライアントからの http リクエストなしで、アプリケーション スコープ Bean 内からリクエスト スコープ Bean をインスタンス化するにはどうすればよいですか。

試してみると:

FacesContext.getCurrentInstance().getApplication().evaluateExpressionGet(context, "#{namesDirectory}", NamesDirectory.class)

リクエストスコープのBeanはどこNamesDirectoryですか、私は得るNullPointerException

4

1 に答える 1

1

タスクをマネージド Bean に依存しないでください。マネージド Bean (スコープに関係なく) は、要求/応答サイクルに使用され、それが唯一の仕事です。ビジネス ロジックは、EJB、CDI、Spring Bean、別のフレームワークの Bean、またはサービス レイヤーとして機能するプレーンな Java クラスなどのサービス クラスで処理する必要があります。

于 2014-06-10T16:31:20.277 に答える