AFAIK @Singleton EJB は、次のようなページ ビューのカウントに適しています。
@Singleton
public class CounterBean {
private int hits = 1;
// Increment and return the number of hits
public int getHits() {
return hits++;
}
}
これは、1 ページの Web アプリケーションでは問題なく機能します。たとえば、Web アプリケーションに 1,000 ページがあり、読み込まれるたびに各ビューのカウンターを表示したい場合はどうでしょうか。
@Singleton はこれに割り当てられますか? つまり、これは効率的でしょうか?(単一のインスタンスを頻繁に更新するために多くのBean を持つ)
私の推測では、単一のインスタンスですべての Web ページ カウンターを管理するのは効率的ではありません。@Singleton で何千もの @RequestScoped Bean を更新するMap <ViewID, Count>
と、大量の同時実行性が発生すると想像してください...
再デプロイ時に永続的な値を更新するために、(@PostConstruct
データベースからプル)、@PreDestroy
(データベースにプッシュ) アノテーションを使用することを考えていました。
ページ ビュー カウンターは、各ビューに表示されます。
Web ページの数は動的です。
Google アナリティクスがこの仕事をしていることは理解していますが、問題は Java EE でこれを行う方法です。
アプリケーション サーバー: Jboss 7.1