Java 2.6:ContainerRequestFilter:不在请求范围内
我在tomcat上有一个服务rest,它可以正常工作,但当我在另一个tomcat服务器上部署它时,它会抛出一个异常 我正在尝试实现ContainerRequestFilter。这个异常似乎是由我的authenticationFilter(实现ContainerRequestFilter的类)中的@Context resourceInfo引起的。但我不明白为什么以及如何修复它。(我跟着 最后是web.xmlJava 2.6:ContainerRequestFilter:不在请求范围内,java,rest,tomcat,jersey,Java,Rest,Tomcat,Jersey,我在tomcat上有一个服务rest,它可以正常工作,但当我在另一个tomcat服务器上部署它时,它会抛出一个异常 我正在尝试实现ContainerRequestFilter。这个异常似乎是由我的authenticationFilter(实现ContainerRequestFilter的类)中的@Context resourceInfo引起的。但我不明白为什么以及如何修复它。(我跟着 最后是web.xml <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>Example API</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>services.MyApplication</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Example API</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
示例API
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.Application
services.MyApplication
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
示例API
/*
我做错了什么?我终于找到了解决方案。我必须创建一个实现DynamicFeature的类,并通过自定义构造函数注册我的AuthenticationFilter
@Provider
public class AuthenticationDynamicFeature implements DynamicFeature {
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext featureContext) {
featureContext.register(new AuthenticationFilter(resourceInfo));
}
}
这里是自定义构造函数:
public AuthenticationFilter(ResourceInfo resourceInfo) {
super();
this.resourceInfo = resourceInfo;
}
我尝试了很多其他方法,这是唯一一种对我有效的方法。是的。它在我的tomcat上有效,但当我在另一台tomcat服务器上部署.war文件时,它会出现错误。(我会编辑帖子以注意它)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>Example API</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>services.MyApplication</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Example API</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
@Provider
public class AuthenticationDynamicFeature implements DynamicFeature {
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext featureContext) {
featureContext.register(new AuthenticationFilter(resourceInfo));
}
}
public AuthenticationFilter(ResourceInfo resourceInfo) {
super();
this.resourceInfo = resourceInfo;
}