第三方小服务程序的 Guice Singleton Servlet Binding 解决方法
Posted
技术标签:
【中文标题】第三方小服务程序的 Guice Singleton Servlet Binding 解决方法【英文标题】:Guice Singleton Servlet Binding work-around for third-party servelets 【发布时间】:2015-04-11 12:33:23 【问题描述】:我正在尝试弄清楚如何为我的代码单例绑定一个 servlet:
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);
这里的问题是应用程序需要服务的两个servelet 都是第三方库(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 是至少目前无法修改的第三方库时,我该如何处理。是否有解决方法来完成这项工作?
【问题讨论】:
【参考方案1】:解决方法是添加:
bind(RemoteApiServlet.class).in(Scopes.SINGLETON);
bind(ServerServlet.class).in(Scopes.SINGLETON);
【讨论】:
以上是关于第三方小服务程序的 Guice Singleton Servlet Binding 解决方法的主要内容,如果未能解决你的问题,请参考以下文章
Google 开源的依赖注入库,比 Spring 更小更快!
Google Guice、Google Gin 和 Spring