는 다음과 같은 서비스를 고려하는 방법이 실행될 때 디버깅 관점에서 내가 request
정말 null
하지 않았다 눈치 아니라 org.apache.openejb.rest.ThreadLocalHttpServletRequest
의 인스턴스 불구하고EJB JAX-RS @Context HttpServletRequest NullPointerException - 이유가 무엇입니까?
@Path("/")
@Stateless
public class SomethingService {
@Context
final HttpServletRequest request
@POST
@Path("post/something/")
@Produces("application/json; charset=UTF-8")
public String addSomething(@FormParam("something") final String something) {
// access to request methods results in NullPointerException
}
}
내가하는 NullPointerException
를 얻을. 나는 메서드 매개 변수의 수준으로 @Context
주입을 이동하면 모든 것이 잘 작동 :
public String addSomething(@FormParam("something") final String something,
@Context final HttpServletRequest request) { ... }
그 이유는 무엇입니까? 지금까지 내가 서비스를 EJB로 만들기 전에 작업하는 것을 기억했다. (나는 @EJB
또는 @Inject
을 사용하여 DAO를 주입 할 수 있었다.) JAX-RS는 모든 요청에 대해 이러한 서비스의 인스턴스를 생성하므로 클래스 레벨 @Context
을 통해 주입 할 수 있습니까? JAX-RS가 아무 것도 할 수 없기 전에 EJB가 인스턴스를 생성하고 프록시 객체를 채워서 이것을 막을 수 있습니까?