セッション スコープとリクエスト スコープに関して、JSF マネージド Bean を実装する最良の方法は何だと思いますか? 私の場合、EJB モジュールと Web モジュールを備えた EAR アプリケーションがあります。EJB モジュールは、ステートレス セッション Bean を提供します。Web モジュールでは、sessionScope で ManagedBean を使用しています。この Bean は、いくつかのステーレス セッション ejb を注入し、さまざまなページで使用できるビジネス データを含むいくつかの値オブジェクトを保持します。
@Named("workflowController")
@SessionScoped
public class WorkflowController {
private List<ItemCollection> someList;
private ItemCollection someBusinessData;
/* Services */
@EJB
private MyService myService;
この Bean は、フロントエンドに多くのアクション メソッドを提供し、ステートレス セッション Bean を利用します。これは一般的な良い習慣ですか?または、コントローラーを要求スコープに変更する必要がありますか? フロントエンド コントローラーが RequestScoped でのみ使用され、すべてのビジネス データ オブジェクトを、SessionScope で ManagedBeans として実装される managedProperties として注入するプロジェクトを見てきました。
私の例では、すべてのビジネス値を保持し、ステートレス ejb に実装されたビジネス メソッドを提供する、SessionScope 内のコントローラーが 1 つだけあります。他のケースでは、RequestScopde で 1 つのコントローラーが使用され、コントローラー Bean に注入される SessionScope で MangedBeans として実装された多くの BusinessValue オブジェクトがあります。
私の質問は次のとおりです: 一般に、Session EJB を SessionScope Managed Bean に注入するのは悪い習慣ですか?