的我有两个请求,过滤器和一个请求拦截如下:订购JAX-RS过滤器和拦截器
@Provider
@RequestLogger
@Priority(100)
public class LogRequestFilter implements ContainerRequestFilter {
...
}
@Provider
@OracleSessionChecker
@Priority(300)
public class CheckOracleSessionFilter implements ContainerRequestFilter {
...
}
@Provider
@RequestChecker
@Priority(200)
public class CheckRequestInterceptor implements ReaderInterceptor {
...
}
我有使用这些过滤器和拦截器JAX-RS Web服务。以下是一个示例Web服务方法。
@POST
@RequestLogger
@RequestChecker
@OracleSessionChecker
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("Logout")
public Response logout(@Context HttpServletRequest request, Parameters inputs) {
...
}
从给定的优先次序,我认为,为了使过滤器/拦截器被称为将是: LogRequestFilter
,CheckRequestInterceptor
,CheckOracleSessionFilter
。
但他们被称为的实际顺序是: LogRequestFilter
,CheckOracleSessionFilter
,CheckRequestInterceptor
。
为什么CheckRequestInterceptor
最后被称为最后一个,即使其优先级为200,处于中间?
我该如何让它们按照我想要的顺序调用(即,LogRequestFilter
,CheckRequestInterceptor
,CheckOracleSessionFilter
)?
在此先感谢。