在使用Graphql的时候遇到的一个小问题,报错位置为:
server.start();
报错代码为:
18 [main] INFO org.eclipse.jetty.util.log - Logging initialized @139ms
105 [main] INFO org.eclipse.jetty.server.Server - jetty-9.3.8.v20160314
690 [main] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@3224a577{HTTP/1.1,[http/1.1]}{0.0.0.0:8999}
Exception in thread "main" javax.servlet.ServletException: Servlets must be bound as singletons. Key[type=com.xintujin.graphqlserver.GraphqlServlet, annotation=[none]] was not bound in singleton scope.
at com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:104)
at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:80)
at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102)
at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:232)
at org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:137)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:856)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:348)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:772)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
at org.eclipse.jetty.server.Server.start(Server.java:405)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:106)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
at org.eclipse.jetty.server.Server.doStart(Server.java:372)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at com.xintujin.graphqlserver.GraphqlServer.main(GraphqlServer.java:76)
百度到错误内容大致是,启动的Servlet必须是单例的,并且提供一个解决办法是
Key[type=com.xintujin.graphqlserver.GraphqlServlet, annotation=[none]]
但是由于学识浅薄并不明白怎么添加,
于是在万能的Google上查了一下
解决办法:
在Servlet上添加一个@Singleton就可以了。