当前位置: 首页 > 知识库问答 >
问题:

无法将资源信息注入容器请求筛选器

翁翰墨
2023-03-14

我正在尝试实现一个检查一些东西的ContainerRequest estFilter。最终,它将验证一个令牌,但我还没有到那里。该过滤器在Grizzly HTTP Server(Grizzly 2.3.4)上运行,位于JAX-RS资源(泽西2.0)前面。我也在使用Guice 3.0。

当我尝试将 javax.ws.rs.container.ResourceInfo 注入到过滤器中时,它为空。

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.Context;
import java.io.IOException;

public class MyRequestFilter implements ContainerRequestFilter {

    @Context
    private ResourceInfo resourceInfo;

    public void filter(ContainerRequestContext containerRequestContext) throws IOException {

        String method = containerRequestContext.getMethod();
        System.out.println("method = " + method);

        if("OPTIONS".equals(method)) return;

        System.out.println("DO SECURITY");
    }
}

请求注入到 JAX-RS 资源中,注入是成功的,我可以使用它。

我做错了什么?

共有1个答案

程和煦
2023-03-14

要在ContainerRequestFilter中启用注入,您必须将其注释为@Provider,然后它才能工作

@Provider
public class MyRequestFilter implements ContainerRequestFilter {

    @Context
    private ResourceInfo resourceInfo;

    ...
}
 类似资料:
  • 我正在运行一个简单的maven项目(Maven3.3.9),其中包含配置文件和资源筛选。似乎总是在默认配置文件上进行筛选。 src/main/filters(默认)中有两个配置文件:config-dev.properties和config-prod.properties(仅包含一个变量application.env=development application.env=production 和s

  • 我有灰熊提供的球衣。 我有一个实现类。但是,为所有传入请求创建一次此类。因此,这样做: 为空。我可以将上下文注入到被调用的实际endpoint中,但这相当粗糙和丑陋,对我来说真的没有用;因为我希望记录各种请求。理想情况下,希望在请求的ResponseFilter端找到这个对象。 必须有一种简单的方法来做到这一点。到目前为止,我看到的所有问题/答案都不适用于灰熊,或者注入了RESTendpoint调

  • 我正在编写一个servlet过滤器。我想添加错误并将响应发送回请求来自的页面。 我知道我们可以将反应重定向为 提前致谢

  • TP5已经将请求封装为\think\Request,所有的请求信息可以通过请求对象获取; 获取请求对象 请求对象的获取有两种方式: 1.在控制器方法内可以直接通过 request 属性获取: $request = $this->request; 2.在其它地方可以Request的单例方法 $request = Request::instance(); 3.使用助手函数 $request = r

  • TP6.0已经将请求封装为\think\Request,所有的请求信息可以通过请求对象获取; 获取请求对象 请求对象的获取有两种方式: 1.在控制器方法内可以直接通过 request 属性获取: $request = $this->request; 2.在其它地方可以用request()的助手函数 $request = request(); 获取请求信息 // 获取当前控制器 $request