0

GWT-RPC と Guice を使用して、かなり単純な GWT アプリをセットアップしました。現時点では、GWT-RPC サービスと、アップロードを受け入れるアプレットの 2 つを提供しています。次のようになります。

public class MyGuiceModule extends ServletModule {
@Override
protected void configureServlets() {
        serve("/path/to/service").with(MyGWTServiceImpl.class);
        serve("/path/to/upload").with(MyUploadServlet.class);
        //bunch of bindings follow...
    }
}

同じアプリケーションから restlet リソースまたは restlet アプリケーションを提供し、web.xml ではなく、guice モジュールでそれらを構成できるようにしたいと考えています。以前、Restlet を使用して REST を使用した GWT アプリをセットアップしましたが、DI を使用していなかったので、これがどのように機能するかについて少し迷っています。

eta: これが私の web.xml です

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd">

  <web-app>

    <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>com.whatever.MyGuiceBootstrap</listener-class>
    </listener>

    <!-- Default page to serve -->
    <welcome-file-list>
      <welcome-file>home.html</welcome-file>
    </welcome-file-list>

  </web-app>

アップデート

これで問題は解決します、乾杯!

    bind(ServerServlet.class).in(Singleton.class);
    Map<String,String> initParams = new HashMap<String,String>();
    initParams.put("org.restlet.application", "path.to.your.RestletApplication");
    serve("/api/*").with(ServerServlet.class,initParams);

update2

最後に、http://hpehl.info/google-appengine-restlet-guice.html から採用したソリューションを採用しましたこれにより、リソース内でインジェクションを使用し、1 行で guicemodule にバインドできます。

4

2 に答える 2

0

古い web.xml を追加してください。しかし、これで問題は解決するはずです。

serve("/api/*").with(ApiServlet.class);

REST API の実装としてプレーンなサーブレットを使用していない場合は、少し注意が必要です。Jersey は Guice と統合することもできます。

于 2013-10-04T09:13:05.953 に答える