2016-08-04 9 views
0

When to use @Singleton annotation of Jersey? - デフォルトジャージーによってRESTエンドポイント - シングルトンRequestScoped

は すべての要求のためのリソースクラスの新しいインスタンスを作成します。したがって、Jerseyリソースクラスに注釈を付けない場合、 は暗黙的に@RequestScopedスコープを使用します。

@RequestScopedエンドポイントはさまざまな理由により適しています。ステートレスであり、リクエストごとに新しいインスタンスを提供します。私はhttp://www.benmccann.com/hibernate-with-jpa-annotations-and-guiceの例に基づいてDAOを実装しているので、ThreadLocal<EntityManager>キャッシュ(Jersey, Guice and Hibernate - EntityManager thread safety)から受信されているので、EntityManagerオブジェクトは@RequestScopedという環境でのみ異なっています。

一方、Jerseyエンドポイントに@Singletonと注釈が付けられているアプリケーションに直面しています。しかし、アノテーションを削除してもアプリケーションの動作やロジックは変更されないようです。

RESTエンドポイントのデフォルト@RequestScopedの代わりに@Singletonを使用する必要がありますか?

答えて

1

セッションベースの残りのapiを持っていない限り、RESTアプリケーションではそれほど重要ではありません(ヒント:それをしないでください、それはRESTのポイントではありません)。

ジャージーが単一のクラスローダーを使用し、APIが他の人に返信中のときに、そのエンドポイントへの他のすべてのリクエストが完了するまでに時間がかかることがあるため、シングルトンは遅くなります(ジャージー)。

関連する問題