cof*_*ine 3 java jetty jersey-2.0
我无法触发我的请求过滤器.我将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");
}
}
Run Code Online (Sandbox Code Playgroud)
我在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);
Run Code Online (Sandbox Code Playgroud)
(所有MyApplication扩展ResourceConfig和电话this.package(...),并this.register(MyFilter.class)在构造函数中.
问题是定义REST端点的类无法实例化,因为 - 在我的情况下 - 实例化取决于必须在请求过滤器中设置的东西.
但是,在调用过滤器之前会对端点类进行实例化.为了首先运行过滤器,必须对其进行注释@PreMatching.
@Provider
@PreMatching
public class MyFilter implements ContainerRequestFilter {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3746 次 |
| 最近记录: |