@Context 注入在 Je​​rsey ContainerRequestFilter (Dropwizard) 中不起作用

Posted

技术标签:

【中文标题】@Context 注入在 Je​​rsey ContainerRequestFilter (Dropwizard) 中不起作用【英文标题】:@Context injection not working in Jersey ContainerRequestFilter (Dropwizard) 【发布时间】:2017-10-21 05:31:32 【问题描述】:

@Context 注入适用于类,但不能使其适用于对象。

ContainerRequestFilter 中的httpServletRequest 产生空指针。

Dropwizard 版本:- 1.1.0

容器请求过滤器

公共类 ApplicationIPAuthFilter 实现 ContainerRequestFilter private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationIPAuthFilter.class); 私有 HerculesRestAccessor restAccessor; 私有字符串应用程序名称; @语境 私有 HttpServletRequest httpServletRequest; 公共应用程序IPAuthFilter() 公共 ApplicationIPAuthFilter(HerculesRestAccessor 访问器,字符串应用程序名称) restAccessor = 访问者; this.applicationName = 应用程序名称; @覆盖 公共无效过滤器(ContainerRequestContext requestContext)抛出 IOException // 需要远程IP 字符串 remoteIp = this.httpServletRequest.getRemoteAddr(); ……

动态特性

@Provider 公共类 ApplicationIPAuthFeature 实现 DynamicFeature 私有最终 HerculesRestAccessor 访问器; 私有最终字符串应用程序名称; 公共应用程序IPAuthFeature(HerculesRestAccessor 访问器,字符串应用程序名称) this.accessor = 访问器; this.applicationName = 应用程序名称; @覆盖 公共无效配置(ResourceInfo 资源信息,FeatureContext 上下文) if (resourceInfo.getResourceMethod().getAnnotation(ApplicationIPAuthRequired.class) != null) // 不工作 context.register(new ApplicationIPAuthFilter(accessor, applicationName)); //@Context 注入适用于类的 ContainerRequestFilter //context.register(ApplicationIPAuthFilter.class);

我正在尝试在 ContainerRequestFilter 中获取远程 ip,以根据 ip 对请求进行身份验证。

我该如何解决这个问题.. 需要帮助吗?

【问题讨论】:

【参考方案1】:

It's a known issue with DynamicFeature。注册为对象时,注入不起作用。

您可以做的一件事是手动注入它,就像this post 中提到的那样。

您可以做的另一件事是使HerculesRestAccessorapplicationName 可注射。或者更确切地说,让应用程序名称可注入,您可以将其设置为配置属性和inject the configuration。如果你这样做,那么你可以将过滤器注册为一个类,并且所有的注入都应该工作。

【讨论】:

@peeskillet..Thanks..:) 将同时注入两个字段并将过滤器注册为一个类。

以上是关于@Context 注入在 Je​​rsey ContainerRequestFilter (Dropwizard) 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.je

警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.je

警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.je

spring 2.5 扫描注入问题

Spring注解注入

SpringMVC---REST POST时出现415 Unsupported Media Type