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
クラスを読みたいと思っています。何らかの処理をしたいからです。 Apacheのウィンクで
、私はこのようなhandleRequest(MessageContext context, HandlersChain chain)
メソッド内インターセプタクラス内このようにそれをやっていた:
SearchResult result = context.getAttribute(SearchResult.class);
RestfulInputBean inputBean=(RestfulInputBean)result.getInvocationParameters()[0];
はい...私はそれについて知っています...しかし、コンテナ要求コンテキストでエンティティストリームを読み取ると、EOFがストリームに達したという後続のメソッドチェーンで例外が発生します。第二に、私は実際のPOJOが欲しい。エンティティストリームからPOJOを取得するにはどうすればよいですか? –