GWT Guice/Gin服务器端问题

bra*_*ebg 1 java gwt gwt-gin guice code-injection

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

我们先发布一些示例代码.

服务器端.

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

.....
executeOperations.do(); ....
Run Code Online (Sandbox Code Playgroud)

这是注入的类ExecuteOperations

@Singleton
public class ExecuteOperations
{
.........
}
Run Code Online (Sandbox Code Playgroud)

我也有servlet模块类

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

} // class
Run Code Online (Sandbox Code Playgroud)

.....

public class SampleWebModule extends ServletModule
{

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

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>
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Tho*_*yer 5

你必须将你的WebchargeServiceImplservlet 映射到你的SampleWebModule,而不是你的web.xml; 否则它将由您的servlet容器而不是Guice构建,因此它不会被"注入".