2
我測試澤西攔截器和過濾器。我有這個州2.4攔截代碼:澤西島2.4 ResponseInterceptor不工作
@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>
當我從firefox輸入u rl地址資源並得到結果,日誌控制檯顯示:
RequestFil
test method
ResponseFil
WriterInterceptor
爲什麼ReaderInterceptor沒有執行?我試圖用兩個具有相同結果的自定義綁定名稱(@Test和@ Test2)來分隔兩個類中的寫入和讀取器攔截器。
由於
好的,理解。謝謝。 – user1151816