2016-08-04 63 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忙於回覆其他人,所以對該端點的所有其他請求可能需要一段時間,直到前者完成爲止,單身球員可能會變慢(在澤西島)。