2015-02-11 46 views
8

我試圖找出如何辛格爾頓綁定一個servlet爲我的代碼:吉斯辛格爾頓Servlet的綁定工作,圍繞第三方servelets

public class GuiceServletModule extends ServletModule { 
    @Override 
    protected void configureServlets() { 
     Map<String, String> params = new HashMap<String, String>(); 
     params.put("org.restlet.application", "com.mycomp.server.RestletApplication"); 
     serve("/rest/*").with(org.restlet.ext.servlet.ServerServlet.class, params); 
     serve("/remote_api").with(com.google.apphosting.utils.remoteapi.RemoteApiServlet.class); 
    } 
} 

這裏的問題是,無論servelets應用需要serve是第三方庫(Restlet和GAE)。

引發的異常是:

[INFO] javax.servlet.ServletException: Servlets must be bound as singletons. Key[type=org.restlet.ext.servlet.ServerServlet, annotation=[none]] was not bound in singleton scope. 

我該如何處理這個時候的servlet是一個第三方庫,不能在這一點上,至少修改。是否有解決方案來完成這項工作?

回答

12

的解決方案是增加:

bind(RemoteApiServlet.class).in(Scopes.SINGLETON); 
    bind(ServerServlet.class).in(Scopes.SINGLETON); 
+0

謝謝你爲我工作的偉大。 – Daniel 2015-09-19 21:50:15