GWT Guice / Gin服务器端问题

时间:2011-06-03 13:28:46

标签: java gwt guice code-injection gin

大家好我的问题。一个GWT项目,因为我读过Gin我只能在客户端使用,而不是Guice可以在服务器端使用。这是我的问题。

首先发布一些示例代码。

服务器端。

public class WebchargeServiceImpl extends RemoteServiceServlet implements WebchargeService
{
@Inject
private Injector injector;
@Inject
private ExecuteOperations executeOperations;

.....
executeOperations.do(); ....

这是注入的类ExecuteOperations

@Singleton
public class ExecuteOperations
{
.........
}

我也有servlet模块类

public class SampleWebGuiceServletConfig extends GuiceServletContextListener
{
@Override
protected Injector getInjector()
{
  return Guice.createInjector(Stage.DEVELOPMENT, new SampleWebModule());
}

} // class

.....

public class SampleWebModule extends ServletModule
{

    @Override
    protected void configureServlets()
    {
       bind(WebchargeServiceImpl.class);  //is it correct to bind a class like that?
    } // class

web.xml

  <servlet>
        <servlet-name>.......WebchargeService</servlet-name>
        <servlet-class>.....WebchargeServiceImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>.........WebchargeService</servlet-name>
        <url-pattern>/Webcharge/WebchargeService</url-pattern>
    </servlet-mapping>
    <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>
    </filter-mapping>

    <listener>
        <listener-class>......SampleWebGuiceServletConfig</listener-class>
    </listener>
</web-app>

我遗漏了一些东西,因为我每次都得到null,这段代码在servlet / jsp env中工作正常,但是这里...... 建议地点。

感谢。

2 个答案:

答案 0 :(得分:5)

您必须在WebchargeServiceImpl中的SampleWebModule而不是中映射您的web.xml servlet;否则它将由您的servlet容器而不是Guice构建,因此它不会被“注入”。

答案 1 :(得分:1)

您的servlet如何实例化?您安装了Guice Servlet Filter吗?