我试图实现一个< code > ContainerRequestFilter 来检查一些东西。最终,它将从SSL客户机证书中提取通用名称,但我还没有做到这一点。过滤器运行在Grizzly HTTP服务器上(Grizzly 2.3.8,没有servlet容器),位于JAX-RS资源(Jersey 2.6)的前面。
当我尝试将org.glassfish.grizzly.http.server.Request
注入过滤器时,它为null。
import org.glassfish.grizzly.http.server.Request;
@Provider
@Priority(Priorities.AUTHENTICATION) // somewhat early
@SkpSecureClient // name the filter with my own annotation
public class SecureClientFilter implements ContainerRequestFilter {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Context
Request request;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
if (request == null) {
log.debug("Unable to inject 'request'");
// I always end up here
} else if (request.isSecure()) {
log.warn("Request is not secure!");
// do something, e.g. abort request
} else {
log.debug("Request is secure!");
}
}
}
将请求注入到 JAX-RS 资源中,注入是成功的,我可以使用它。
我做错了什么?
我认为这是泽西岛的一个错误。刚刚提交了一个问题 https://java.net/jira/browse/JERSEY-2462
问题内容: 我有灰熊提供的球衣。 我有一个实现类。但是,为所有传入请求创建一次此类。因此,这样做: 该为空。我可以将上下文注入到被调用的实际端点中,但这相当粗陋和丑陋,对我来说真的没有用;因为我希望记录各种请求。理想情况下,希望在请求的ResponseFilter端获取此对象。 必须有一种简单的方法来执行此操作。到目前为止,我所看到的所有问题/答案都不适用于Grizzly,也无法插入REST端点调
将EntityManager注入资源可以工作,但不能注入Callable。在这里,EntityManager保持。 请告知代码保存在这里是否比保存在GitHub上更好。
null Spring-web有没有可能在调用Jersey之前消耗InputStream? 请帮帮我. 编辑 我的回答是 芭芭拉 我的控制台输出是
我怎么解决这个...需要帮助吗?
我试图使用对基于Tomcat的Jersey应用程序强制执行某些身份验证。我遵循了这份文件。问题:筛选器从未触发 web.xml文件:
我已经看了很多帖子,似乎没有什么能像我喜欢的那样工作。 我想将一个对象从一个过滤器注入到ContainerRequestContext属性中,然后在其他类中检索它。 这是我的过滤器: 下面是我想要访问ContainerRequestContext的类: 我的spring配置: 如果我将容器请求上下文注入到我的 Web 资源中,一切都按预期工作。但是,如果调用我的提供程序类容器请求上下文始终为空。