簡體   English   中英

使用Google Cloud Endpoints和Guice進行播放

[英]Appengine with Google Cloud Endpoints and Guice

因此,我想在Appengine中使用Guice和Cloud Endpoints來注入我的服務或者daos - 我猜這很常見,但我沒有找到這方面的教程。

官方Guice for Appengine文檔似乎在這里: https//github.com/google/guice/wiki/GoogleAppEngine

配置Guice時,您需要設置com.google.inject.servlet.GuiceFilter來攔截每個請求“/ *”。 在某些時候,您必須初始化模塊。 就像文檔說的那樣,一個好的地方就是ServletContextListener。

一種特殊的模塊是ServletModules,它將請求路徑映射到Servlet-Classes,而不是在web.xml中執行此操作,您現在可以通過編程方式執行此操作。

非常直接,直到這里。 但是如何配置Guice還包括Endpoint-Class?

事實證明,有一個GuiceSystemServiceServletModule可以處理這個問題。

public class GuiceSSSModule extends GuiceSystemServiceServletModule {

  @Override
  protected void configureServlets() {
    super.configureServlets();

    Set<Class<?>> serviceClasses = new HashSet<Class<?>>();
    serviceClasses.add(MyEndpoint.class);
    serviceClasses.add(AnotherAndpoint.class);
    this.serveGuiceSystemServiceServlet("/_ah/spi/*", serviceClasses);
  }
}

在ServletContextListener的Injector構造中包含此模塊:

public class MyGSCL extends GuiceServletContextListener {

  @Override
  protected Injector getInjector() {
    return Guice.createInjector(new GuiceSSSModule(), new BaseModule());
  }
}

並在web.xml中使用此偵聽器:

<listener>
   <listener-class>de.mypkg.MyGSCL</listener-class>
</listener>

還要確保在web.xml中包含Guice過濾器:

<!-- GUICE -->
<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>

您的端點將再次在/ _ah / api / ...下可用,您可以在端點類中使用@Inject。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM