gpt4 book ai didi

java - 请求过滤器在 Jersey 2 on Embedded Jetty 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:43 26 4
gpt4 key购买 nike

我无法触发我的请求过滤器。我将 jetty 9.1 作为嵌入式服务器运行。

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.ext.Provider;

@Provider
public class MyFilter implements ContainerRequestFilter {

@Override
public void filter(ContainerRequestContext arg0) throws IOException {
System.out.println("HEY HO");
}
}

我在ResourceConfig中注册了这个类,也尝试注册了包。它只是被忽略了。这是一个错误,还是我遗漏了什么?

这就是我启动 Jetty 的方式:

Weld weld = new Weld();
WeldContainer container = weld.initialize();

URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build();
ResourceConfig config = ResourceConfig.forApplicationClass(MyApplication.class);

Server server = JettyHttpContainerFactory.createServer(baseUri, config);

(MyApplication 扩展 ResourceConfig 并在构造函数中调用 this.package(...)this.register(MyFilter.class)

最佳答案

问题是无法实例化定义 REST 端点的类,因为 - 在我的情况下 - 实例化取决于必须在请求过滤器中设置的内容。

但是,端点类在调用过滤器之前被实例化。为了首先运行过滤器,必须对其进行注释 @PreMatching

@Provider
@PreMatching
public class MyFilter implements ContainerRequestFilter {
...
}

关于java - 请求过滤器在 Jersey 2 on Embedded Jetty 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21024688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com