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 にバインドできます。