2011-12-12 2 views
3

Glassfish 3.1 서버에서 저지를 사용하여 API를 작성 중이므로 특정 헤더, 발신자의 IP 등을 얻기 위해 HttpServletRequest 객체에 액세스해야합니다. API 메소드 호출을 사용하지만 전역 적으로 처리하는 것이 더 효율적입니다. 아래 스 니펫 (snippet)과 같은 클래스 수준에서 주입하는 것이 안전할까요? 아니면 Glassfish와 일종의 동시성 문제가 발생합니까?@Context Jersey의 @Context HttpServletRequest 범위

@Path("/myapi") 
@RequestScoped 
public class MyApiResource { 

    @Context private UriInfo context; 
    @Context private HttpServletRequest request; 

답변

8

안전합니다. @RequestScoped 주석을 사용하지 마십시오. JAX-RS 리소스는 기본적으로 요청 범위입니다. 즉, 요청마다 새로운 인스턴스가 만들어 지므로 동시성 문제가 발생하지 않습니다.

+0

고마워요. 호기심에서 벗어나 이중화 이외의 @RequestScoped 주석을 남겨 두는 데는 단점이 있습니까? – user256447

+1

@RequestScoped는 JAX-RS가 아닌 CDI 주석입니다. 리소스를 CDI 빈으로 바꿔서 클래스에 몇 가지 추가 제약 조건을두고 오버 헤드가 더 많이 발생하지 않을지 확신하지 못합니다. 따라서 실제로 리소스를 CDI 빈으로 변환하지 않는 한 포함하지 않는 것이 더 좋습니다. –