2016-08-04 57 views
0

When to use @Singleton annotation of Jersey? -REST端点 - 辛格尔顿VS RequestScoped

默认情况下,新泽西州创建资源类的 每个请求一个新的实例。所以如果你不注释泽西资源类,它就会隐含地使用@RequestScoped作用域。

@RequestScoped端点看起来更适合各种原因。它是无状态的,为每个请求提供新的实例。我已经实现了基于http://www.benmccann.com/hibernate-with-jpa-annotations-and-guice例如因此提供EntityManager对象,因为它们是从ThreadLocal<EntityManager>缓存(Jersey, Guice and Hibernate - EntityManager thread safety)只获得了在@RequestScoped环境是不同的DAO的。

在另一方面,我也遇到因新泽西州端点标注为@Singleton应用。但似乎删除注释不会改变应用程序的行为/逻辑。

@Singleton应该用来取代默认的@RequestScoped对REST端点?

回答

1

它不会在REST的应用还有很多事 - 除非你有一个基于REST API会话(提示:不要做,这不是REST点)。

由于球衣使用单个类加载器,并且当您的API忙于回复其他人,所以对该端点的所有其他请求可能需要一段时间,直到前者完成为止,单身球员可能会变慢(在泽西岛)。