public class ApplicationIPAuthFilter implements ContainerRequestFilter { private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationIPAuthFilter.class); private HerculesRestAccessor restAccessor; private String applicationName; @Context private HttpServletRequest httpServletRequest; public ApplicationIPAuthFilter(){ } public ApplicationIPAuthFilter(HerculesRestAccessor accessor, String applicationName) { restAccessor = accessor; this.applicationName = applicationName; } @Override public void filter(ContainerRequestContext requestContext) throws IOException { // need remote Ip String remoteIp = this.httpServletRequest.getRemoteAddr(); .... } }
@Provider public class ApplicationIPAuthFeature implements DynamicFeature { private final HerculesRestAccessor accessor; private final String applicationName; public ApplicationIPAuthFeature(HerculesRestAccessor accessor, String applicationName) { this.accessor = accessor; this.applicationName = applicationName; } @Override public void configure(ResourceInfo resourceInfo, FeatureContext context) { if (resourceInfo.getResourceMethod().getAnnotation(ApplicationIPAuthRequired.class) != null) { // not working context.register(new ApplicationIPAuthFilter(accessor, applicationName)); //@Context injection works in ContainerRequestFilter for classes //context.register(ApplicationIPAuthFilter.class); } } }
我怎么解决这个...需要帮助吗?
这是DynamicFeature的一个已知问题。注册为对象时,注射不起作用。
你可以做的一件事是手动注入它,就像在这篇文章中提到的。
您可以做的另一件事是使HerculesRestAccessor
和ApplicationName
可插入。或者使应用程序名称可注入,您可以使其成为配置属性并注入配置。如果您这样做了,那么您就可以将过滤器注册为类,并且所有的注入都应该工作。
给定以下web.xml: 如何告诉DropWizard将“模块”servlet上下文参数设置为“com.foo.MainModule”? 始终返回空列表。我们应该扩展这个类吗?
我正在测试一个(Eclipse 4)应用程序(我不是在谈论单元测试,而是更多的集成和系统测试)。 我有一个反复出现的问题需要解决。我必须将测试中的上下文“注入”(@inject)到被测试的类中。换句话说,我需要测试做应用程序通常做的事情。 我所做的是创建一个私有方法: 我(错误地)期望刚才在这里创建的上下文可以在测试中的一个类中使用。例如。: 肯定少了些什么!我也创建了activator(为简洁起
下面是我的表格: 截取方法如下: 我添加了以下bean:
那么如何解决这个问题呢?为什么为空。
我目前正在构建一个基于Dropwizard Guice泽西岛的应用程序,其中数据库访问暂时由JDBI处理。 我试图实现的是使用典型的企业架构,其中资源访问服务类访问DAO类,DAO类反过来访问数据库。以适当的DI方式将所有这些连接起来会很好,尽管我想如果其他方法都失败,我可以在应用程序的run()方法中构建对象图。 所以,我遇到了之前提到过的问题:获取DBIFactory需要环境和配置,它们需要在
试图创建一个自定义的,我可以通过Jersey注入到我的资源中。 这在本问题的Java中有涉及。我已经阅读了有关这方面的文档,这些文档也是用Java编写的。最后,GitHub中的一些代码涵盖了相同的主题(通过Dropwizard完成)。 这将全部编译,但在运行时失败,出现以下异常 我不知道是我在向Scala的转换中犯了错误,还是我在注册绑定器时做了错误的事情。