4

統計情報や監視にEJB- @ Singleton(javax.ejb.Singleton)を使用するか、Common @ SessionScoped-Beanに統計情報をキャッシュする方がよいでしょうか?私の質問をクリアするには、ここにある2つのシナリオ:Iクエリー結果を管理するEJB- @ Singleton

シナリオ:

は、ユーザーがWebsessionを開始し、データベース・クエリが統計やDataTableのを表示することができます。これらのクエリは、そのセッション内で完全に満たされています。 10.000のユーザーは10.000の等しいデータベースクエリを作成します。

シナリオII:

ユーザーはWebsessionを開始し、シングルトン・ビーン@前もって初期化から統計やDataTableのために件のデータを再試行します。 @Singleton(javax.ejb.Singleton)は、Server-Startup(@Startup)の開始時にクエリを作成しました。だから、10.000ユーザーはONEキャッシュ(@Singleton)から読み取ることができ、データベースに問い合わせる必要はありません。他の誰かがデータを作成/編集/削除した場合、My @ Singleton-Beanはキャッシュされたデータのリフレッシュをトリガーします。

は、だから私の質問は以下のとおりです。

  • んシナリオIIシナリオIよりも良いスケール?私はそう思います。私は正しい?
  • 他に注意すべき点がありますか?
  • 私が知っているステートレス・ビーンズは@statefulや@Singletonよりはるかにスケールがあります。 @ Stateless-Beanを使用し、JPA/Hibernate Cachesのようなものでクエリをキャッシュすることを検討する必要があります。
  • @Singleton(javax.ejb.Singleton)ではなく@ApplicationScoped(javax.enterprise.context)を使用してプロキシを使用する必要がありますか?それは良いでしょうか?

答えて

2

はい、シナリオ2のスケーリングは1よりも優れています。

エンティティをキャッシュするために、下位層(永続性階層を意味する)を使用する方が良いです。単純に です。

どちらを使用するかは、使用しているサーバーによって異なります。完全なエンタープライズサーバーを使用している場合は、単純にtomcatなどのWebコンテナを使用している場合は、マネージドBean。

+1

私はJboss ASを使用しています。 – nimo23

関連する問題