2011-10-10 2 views
0

Jax-RS RESTful 웹 서비스에서 작업하고 있습니다. 아직 (Eclipse에서) 코딩하는 동안 쉽게 디버깅 할 수 있기를 바랬으므로 Maven 프로젝트를 결정하고 Grizzly 웹 서버에 종속성을 사용하여 서버를 2 코드 라인 (WAR 파일을 만들지 않아도 됨). 내가 널 (null)에 대한 컨텍스트 변수를 검사 할 때 나는 경우Injected ServetContext가 Grizzly에서는 null이고 TomCat에서는 null이 아닙니다.

@javax.ws.rs.core.Context 
ServletContext context; 

, 그것은 null이되지 않습니다 : 내 웹 서비스 구현 클래스 (@Path와 하나)에서

나는 멤버 변수로 컨텍스트를 주입 한 WAR 파일을 빌드하고 TomCat에 배포하십시오. 그러나 Grizzly 서버를 시작한 다음 확인하면 null이됩니다. 다음과 같이 그리즐리 V1.9 서버가 수행 시작 : 나는 구글이 해결책을 찾기 위해 노력했습니다

String url = "http://localhost:1234"; 
SelectorThread srv = GrizzlyServerFactory.create(url); 

, 사람은 web.xml에서 "시작시로드"를 사용하도록 권장하지만,이 어느 쪽도 도움이되지 않았다.

아이디어가 있으십니까? 건배!

답변

0

다른 대답은 약간의 의미가 있지만, 필자는 확신하지 못했습니다. 왜냐하면 maven 종속 트리에 따라 서블릿 패키지도 포함 되었기 때문입니다.

다른 maven 종속성으로 마이그레이션하여 문제를 해결할 수 있습니다. 지금

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-grizzly2</artifactId> 
    <version>1.9.1</version> 
</dependency> 

를 사용하여 작동하도록 http://blogs.oracle.com/PavelBucek/entry/jersey_grizzly_2_x_integration (샘플)의 지시 사항을 준수하고 있습니다. 이제 서블릿 컨텍스트가 성공적으로 주입됩니다.

1

내 생각 엔 Grizzly를 Servlet Container 확장없이 사용하는 것 같습니다. 이론적으로 JAX-RS는 서블릿 환경 에서뿐만 아니라 ServletContext 또는 HttpServletRequest 또는 Response를 얻을 수 없다.