1

こんにちは、私の質問です。GWT プロジェクトです。Gin i を読んだことがありますが、Guice はサーバー側で使用できますが、クライアント側でのみ使用できます。これが私の質問です。

最初にいくつかのサンプルコードを投稿しましょう。

サーバ側。

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

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

注入されたクラス ExecuteOperations は次のとおりです。

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

また、サーブレットモジュールクラスがあります

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になるため、何かが欠けています。このコードは、サーブレット/jsp環境では問題なく動作しますが、ここでは...アドバイスの場所。

ありがとう。

4

2 に答える 2

5

WebchargeServiceImplサーブレットをSampleWebModuleではなくにマップする必要がありますweb.xml。それ以外の場合は、Guice ではなくサーブレット コンテナーによって構築されるため、「注入」されません。

于 2011-06-03T14:43:50.530 に答える
1

サーブレットはどのようにインスタンス化されますか? Guice Servlet Filterをインストールしましたか?

于 2011-06-03T14:35:34.193 に答える