在到达端点/资源之前进行调试Jersey映射/路由执行

时间:2018-08-03 09:26:51

标签: jersey glassfish

我已经与Glassfish / Jackson合作了一年多,在引入新的端点实现时总是遇到这个问题:当未达到端点并且我想了解原因时,唯一我必须继续的提示是返回的请求,因为执行没有到达所需的端点或资源(路由/映射错误)。

我想通过“原始”请求在到达端点/资源之前拦截Jersey映射/路由执行,以便我可以更好地理解资源/端点映射和路由问题。

1 个答案:

答案 0 :(得分:1)

This answer

@xeye提交给另一个 问题,为我解决了这个问题:

创建一个实现ContainerRequestFilter的过滤器,并覆盖其filter方法。在这里我们可以拦截所有请求进行调试。

// Executed whenever a request is sent to the API server.
// Useful for debugging errors that don't reach the desired endpoint implementation.
@Provider
@Priority(value = 0)
public class MyFilter implements ContainerRequestFilter {
    @Context // request scoped proxy
    private ResourceInfo resourceInfo;

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
        try {
            // put a breakpoint or log desired attributes of requestContext here.
        } catch (Exception e) {
            // ignore
        }
   }
}

然后在您的ConfigResource实现中注册此新类

public class MyResourceConfig extends ResourceConfig {
    public MyResourceConfig(){
        register(MyFilter.class);
        // ...
    }

It's OK to Ask and Answer Your Own Questions