2014-01-17 111 views
1

我正在尝试用guice依赖注入的球衣应用程序。当我通过web.xml加载GuiceFilter时,一切正常。但是当我使用下面给出的guice api注册过滤器时,球衣不会被初始化。如何以编程方式注册GuiceFilter?

protected void configureServlets() { 
    final Map<String, String> params = new HashMap<String, String>(); 
    params.put(PackagesResourceConfig.PROPERTY_PACKAGES, "com.mypackage.rest"); 
    bind(MyInterface.class).to(MyImpl.class); 
    filter("/*").through(GuiceFilter.class); 
    serve("/*").with(GuiceContainer.class, params); 
} 

有人可以帮忙吗?

回答

0

您不需要在Guice过滤器中注册Guice过滤器。它应该直接注册在你的servlet容器中,在web.xml或创建你的servlet容器的代码中(例如嵌入式Jetty)。另一方面,其他servlet和过滤器可以在Guice过滤器中注册。

如果您不会在您的servlet容器中注册Guice过滤器,它将如何知道您想通过此过滤器传递您的请求?

+0

那么,如果我想要在不使用web.xml的情况下加载GuiceFilter,你有什么建议?我试着创建一个过滤器来扩展GuiceFilter,并使用@WebFilter注释来加载它作为过滤器。它工作正常。这是一个好方法吗? –

+0

不幸的是,我不知道。我还没有使用JEE注释。然而,无论你如何设置过滤器,通过(GuiceFilter.class)'写过滤器(“/ *”)不是很正确,除非你真的想在Guice过滤器中运行Guice过滤器。 –

+0

谢谢弗拉基米尔 –

相关问题