【发布时间】:2014-03-12 18:15:04
【问题描述】:
我正在尝试设置请求过滤器,因为我想在调用我的逻辑之前检查一些 http 标头信息。不幸的是,我的过滤器永远不会在 JBoss AS7.1.1 中被调用。我已经尝试将 RestEasy 实现(模块)更新到 3.0.6,如 RestEasy 文档中所述。它说您只需要替换新实现 zip 文件提供的目录,我就这样做了。 AS 启动时没有任何错误,但行为没有任何变化。每个请求都不会被拦截。我从一个更复杂的示例中提取了这段代码,但即使是这个简单的东西也不起作用:
Filter.java
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.ext.Provider;
@Provider
@Secured
public class SecurityFilter implements ContainerRequestFilter {
public void filter(ContainerRequestContext crc) throws IOException {
throw new IllegalStateException("Not in my house");
}
}
ItemsResource.java
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
@Path("/Items")
public class ItemsResource {
@GET
@Produces("application/json")
@Secured
public String getJson() {
return "{\"id:\" \"1\"}";
}
}
ApplicationConfig.java
@javax.ws.rs.ApplicationPath("rest")
public class ApplicationConfig extends Application {
}
Secured.java
import javax.ws.rs.NameBinding;
@NameBinding
public @interface Secured {}
如果我尝试使用没有注释的拦截器和资源,我不会更改任何内容。我希望所有请求都必须被拦截,但不会。我没有胶水怎么办。有人可以帮助我们提供一些建议吗?让我们添加一些额外的东西。我用 Wildfly(JBoss 8.0.0 Final)尝试了同样的事情。通过使用@NameBinding 和应用自定义注释进行拦截也不起作用,但如果我不使用注释而只是用@Provider 注释拦截器,我的所有请求都会被拦截。我必须迁移到 Wildfly 还是什么?
【问题讨论】:
标签: java rest jboss resteasy interceptor