我有一个Play 2网络应用,用户可以使用twitter(/authenticate/twitter
)登录。服务器启动一段时间后,登录不再有效,我收到:
Feb 17, 2015 8:22:10 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [play] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.util.concurrent.TimeoutException: This request was timed out after 60000 ms
at play.core.server.servlet25.Play2Servlet25RequestHandler.onFinishService(RequestHandler.scala:36)
at play.core.server.servlet.Play2GenericServletRequestHandler.apply(RequestHandler.scala:371)
at play.core.server.servlet.Play2WarServer$$anonfun$handleRequest$2.apply(Play2Server.scala:64)
at play.core.server.servlet.Play2WarServer$$anonfun$handleRequest$2.apply(Play2Server.scala:64)
at scala.Option.map(Option.scala:145)
at play.core.server.servlet.Play2WarServer$.handleRequest(Play2Server.scala:64)
at play.core.server.servlet.GenericPlay2Servlet.service(Play2CommonServlet.scala:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:680)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
我根本不知道从哪里开始调查。如果我重新启动服务器登录工作正常一段时间......你能给出一个提示吗?
我正在使用SecureSocial进行Twitter身份验证。应用程序使用Tomcat服务器部署在Elastic Beanstalk上。
答案 0 :(得分:1)
您的服务在做什么?你尝试过线程转储吗?
这很可能是因为在servlet API上运行 - 尤其是servlet 2.5。 Play是一个异步框架,servlet 2.5是完全同步的。您在尝试在同步Web服务器中运行异步Web应用程序时遇到了麻烦。如果我是你,我会使用一个支持Play本地的平台,例如Heroku。