Java Jersey 2.4 ReaderInterceptor不工作
我正在测试Jersey拦截器和过滤器。我有一个Jersey 2.4拦截器代码:Java Jersey 2.4 ReaderInterceptor不工作,java,httprequest,jersey-2.0,Java,Httprequest,Jersey 2.0,我正在测试Jersey拦截器和过滤器。我有一个Jersey 2.4拦截器代码: @Provider @Test public class TestInterceptor implements WriterInterceptor, ReaderInterceptor { private final static Logger log = .... @Override public void aroundWriteTo (WriterInterceptorContext c
@Provider
@Test
public class TestInterceptor implements WriterInterceptor, ReaderInterceptor {
private final static Logger log = ....
@Override
public void aroundWriteTo (WriterInterceptorContext context)
throws IOException, WebApplicationException {
log.debug("WriterInterceptor");
context.proceed();
}
@Override
public Object aroundReadFrom(ReaderInterceptorContext ric)
throws IOException, WebApplicationException {
log.debug("ReaderInterceptor");
return ric.proceed();
}
}
我的资源方法:
@Path("{test}")
@GET
@Produces(MediaType.APPLICATION_JSON)
@Test
public FooObj test () {
log.debug("test method");
return new FooObj();
}
两个过滤器:
@Provider
public class ResponseFil implements ContainerResponseFilter {
private final static Logger log = ....
@Override
public void filter(ContainerRequestContext crc, ContainerResponseContext crc1)
throws IOException {
log.debug("ResponseFil");
}
}
@Provider
public class RequestFil implements ContainerRequestFilter {
private final static Logger log = ....
@Override
public void filter(ContainerRequestContext crc) throws IOException {
log.debug("RequestFil");
}
}
和我的web.xml servlet配置:
<servlet>
<description>Servlet test</description>
<servlet-name>REST_servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.test.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
为什么不执行ReaderInterceptor?我尝试在两个类中使用两个自定义绑定名(@Test和@Test2)分离写截取器和读截取器,结果相同
谢谢只有当请求/响应实体可用时,才会执行拦截器(的实现)。在您的情况下,这意味着只有WriterInterceptor
正在执行,因为您正在从资源方法向客户端发送实体(一个FooObj
的实例)。如果您有一个POST
方法从用户那里接收输入,您的ReaderInterceptor
也将被调用
如果即使没有实体存在,也需要修改请求,请使用/
有关更多信息,请参见规范。好的,明白。谢谢
RequestFil
test method
ResponseFil
WriterInterceptor