2016-08-04 2 views
0

When to use @Singleton annotation of Jersey? - 기본 저지으로REST 엔드 포인트 - 싱글 RequestScoped

는 모든 요청에 ​​대한 자원 클래스의 새 인스턴스를 만듭니다. 따라서 Jersey 리소스 클래스에 주석을 달지 않으면 은 암시 적으로 @RequestScoped 범위를 사용합니다.

@RequestScoped 종단점은 다양한 이유로 더 적합 해 보입니다. 상태 비 저장이며 각 요청에 대해 새 인스턴스를 제공합니다. DAO를 구현 한 http://www.benmccann.com/hibernate-with-jpa-annotations-and-guice 예를 들어 EntityManager 개체는 ThreadLocal<EntityManager> 캐시 (Jersey, Guice and Hibernate - EntityManager thread safety)에서 수신되었으므로 @RequestScoped 환경에서만 서로 다릅니다.

반면에 Jersey 종점에 @Singleton이라는 주석이 달린 응용 프로그램이 있습니다. 하지만 어노테이션을 제거해도 응용 프로그램의 동작/논리가 변경되지는 않습니다.

REST 엔드 포인트의 기본값 인 @RequestScoped 대신 @Singleton을 사용해야하는 경우?

답변

1

세션 기반 휴식 API가 없다면 REST 응용 프로그램에서는별로 중요하지 않습니다. (힌트 : 그렇게하지 마십시오. REST의 요점은 아닙니다.)

저지가 단일 클래스 로더를 사용하고 API가 다른 사람에게 회신하는 중일 때 싱글 톤이 느려질 수 있습니다 (저지). 그러면 해당 엔드 포인트에 대한 다른 모든 요청에 ​​전자가 완료 될 때까지 약간의 시간이 걸릴 수 있습니다.