Apache Wink에서 Apache CXF 2.6.2로 마이그레이션 중입니다. 내가 요청 가로 채기 위해 다음과 같은 코드를 작성했습니다 :JAXRS-2.0 애플리케이션의 인터셉터 클래스에서 HTTP JSON PayLoad를 POJO로 가져옴
@Provider
public class RequestInterceptor implements ContainerRequestFilter{
@Context
private ResourceInfo resourceInfo;
@Context
private ResourceContext resourceContext;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
UriInfo info = requestContext.getUriInfo();
System.out.println("URI path \"/" + info.getPath() + "\" invoked on " + info.getMatchedResources());
requestContext.getRequest();
RestfulInputBean bean = new RestfulInputBean();
IRestPreProcessor preProcessor = (IRestPreProcessor)resourceContext.getResource(resourceInfo.getResourceClass());
preProcessor.preResource(bean);
}
}
을하고 다음 내 자원 클래스입니다 :
나는 서비스 모두를 호출하고@Provider
@Path("test")
public class AnotherRestfulResource implements IRestPreProcessor{
public MyCustomObject preResource(RestfulInputBean bean){
//code
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public RestfulResultBean test(UserDataBean dataBean){
//My Code
}
public RestfulResultBean postTest(MyCustomObject assembly){
//My Code
}
}
것은 잘 작동하고 AnotherRestfulResource.test()
는 전달 된 매개 변수와 함께 호출지고 (이 경우 사용자 이름과 암호).
나는 약간의 처리를하고 싶기 때문에 UserDataBean
안에 RequestInterceptor
클래스를 읽고 싶습니다.
, 나는이 같은 handleRequest(MessageContext context, HandlersChain chain)
방법 내부의 인터셉터 클래스 내에서 다음과 같이 그 일을했다 : 기본적으로
SearchResult result = context.getAttribute(SearchResult.class);
RestfulInputBean inputBean=(RestfulInputBean)result.getInvocationParameters()[0];
예 ... 알고 있습니다 ... 컨테이너 요청 컨텍스트에서 엔티티 스트림을 읽은 경우 EOF가 스트림에 도달했다고 말하는 후속 메서드 체인에서 예외가 발생합니다. 둘째, 나는 실제 POJO를 원한다. 엔티티 스트림에서 POJO를 얻으려면 어떻게해야합니까? –