2013-04-15 21 views
1

我試圖做一個@Named注入一個綁定的字符串在ServeContextListener,但我總是得到該字符串未綁定異常。所以我猜這個ServeContextListener不踢Guice ServeContextListener not kick-in

這是我的web.xml配置

<!-- GAE-Shiro --> 

<context-param> 
    <param-name>user-base-url</param-name> 
    <param-value>/user/admin</param-value> 
</context-param> 

<context-param> 
    <param-name>static-base-url</param-name> 
    <param-value></param-value> 
</context-param> 

<filter> 
    <filter-name>guiceFilter</filter-name> 
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>guiceFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
</filter-mapping> 

<listener> 
    <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> 
</listener> 

<listener> 
    <listener-class>org.jboss.errai.ui.demo.server.guice.ServeContextListener</listener-class> 
</listener> 

<mime-mapping> 
    <extension>manifest</extension> 
    <mime-type>text/cache-manifest</mime-type> 
</mime-mapping> 

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

<!-- JBoss Resteasy --> 

<context-param> 
    <param-name>resteasy.guice.modules</param-name> 
    <param-value>org.jboss.errai.ui.demo.server.guice.ServeModule</param-value> 
</context-param> 

<listener> 
    <listener-class> 
     org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener 
    </listener-class> 
</listener> 

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/</param-value> 
</context-param> 

<servlet> 
    <servlet-name>Resteasy</servlet-name> 
    <servlet-class> 
     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Resteasy</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

實際的結合是在ServeLogic

@Override 
protected Injector getInjector() { 
    return Guice.createInjector(new ServeLogic(userBaseUrl, staticBaseUrl), new ServeModule(userBaseUrl)); 
} 

只有那些被綁定的是resteasy.guice.modules

org.jboss.errai.ui.demo.server.guice.ServeModule 

這是爲什麼?

+0

請將您發佈的實際堆棧跟蹤是有幫助的。我瀏覽了web.xml,它看起來是正確的。 – ilikeorangutans

+0

@ilikeorangutans我已經解決了這個問題,請看我的回答 – xybrek

回答

0

我已經解決了這個isssue:

  • 擴展GuiceResteasyBootstrapServletContextListener並結合ServeContextListener它。
  • 這樣的應用程序只有一個語境收聽這是GuiceResteasyBootstrapServletContextListener

因此我只有這個監聽器:

<listener> 
    <listener-class> 
     org.jboss.errai.ui.demo.server.guice.CustomGuiceResteasyBootstrapServletContextListener 
    </listener-class> 
</listener> 
+0

你好xybrek,你可以添加正確的web.xml的答案。謝謝。 – Mark