Jersey未触发ContainerRequestFilter

Jersey未触发ContainerRequestFilter,jersey,grizzly,Jersey,Grizzly,我正在尝试使用ContainerRequestFilter在基于Grizzly的Jersey应用程序上强制执行一些身份验证 我通过扩展PackageResourceConfig创建自己的资源配置: public class MainResourceConfig extends PackagesResourceConfig { public MainResourceConfig() { super("za.co.quinn.ws"); Map<Str

我正在尝试使用ContainerRequestFilter在基于Grizzly的Jersey应用程序上强制执行一些身份验证

我通过扩展PackageResourceConfig创建自己的资源配置:

public class MainResourceConfig extends PackagesResourceConfig {

    public MainResourceConfig() {
        super("za.co.quinn.ws");
        Map<String, Object> properties = getProperties();
        properties.put(
                "com.sun.jersey.spi.container.ContainerRequestFilter",
                "com.sun.jersey.api.container.filter.LoggingFilter;" + MainRequestFilter.class.getName()
        );
        properties.put(
                "com.sun.jersey.spi.container.ContainerResponseFilters",
                "com.sun.jersey.api.container.filter.LoggingFilter;" + MainResponseFilter.class.getName()
        );
    }
}
响应筛选器用于标题:

@Override
public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {

    response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
    response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, HEAD, POST, DELETE, PUT");
    response.getHttpHeaders().add("Access-Control-Allow-Headers", "Authorization, Content-Type");

    return response;
}
不会触发MainResponseFilter,但不会触发ContainerRequestFilter

“不会触发MainResponseFilter,但不会触发ContainerRequestFilter。”

看看你的属性,主要是它的发送,并比较它们

...container.ContainerRequestFilter"

...container.ContainerResponseFilters"
您缺少请求筛选器的
s
。为了避免这样的拼写错误,可以使用常量

你也可以这样做

getContainerRequestFilters().add(new YourRequestFilter());
getContainerResponseFilters().add(new YourResponseFilter());
getContainerRequestFilters().add(new YourRequestFilter());
getContainerResponseFilters().add(new YourResponseFilter());