Playframework TomCat上托管的Play项目中的随机错误:异常ClientAbortException:null

Playframework TomCat上托管的Play项目中的随机错误:异常ClientAbortException:null,playframework,tomcat5.5,socketexception,Playframework,Tomcat5.5,Socketexception,我有一个托管在tomcat 5.5服务器上的示例项目,它使用JDBC连接到MSSQL R2数据库。但是,我经常随机地收到ClientBortException,应用程序崩溃。我能做什么?调试没有帮助,因为我无法再现错误: 播放版本:1.2.3和1.2.4(在这两个版本上都会发生错误) 计算机:Windows Server 2003和2008 堆栈跟踪 错误~ @698gd0b9n Internal Server Error (500) Oops: ClientAbortException

我有一个托管在tomcat 5.5服务器上的示例项目,它使用JDBC连接到MSSQL R2数据库。但是,我经常随机地收到ClientBortException,应用程序崩溃。我能做什么?调试没有帮助,因为我无法再现错误:

  • 播放版本:1.2.3和1.2.4(在这两个版本上都会发生错误)
  • 计算机:Windows Server 2003和2008
堆栈跟踪 错误~

@698gd0b9n
Internal Server Error (500)

Oops: ClientAbortException
An unexpected error occured caused by exception ClientAbortException: null

play.exceptions.UnexpectedException: Unexpected Error
    at play.Invoker$Invocation.onException(Invoker.java:244)
    at play.Invoker$Invocation.run(Invoker.java:286)
    at play.server.ServletWrapper$ServletInvocation.run(ServletWrapper.java:548)
    at play.Invoker.invokeInThread(Invoker.java:68)
    at play.server.ServletWrapper.service(ServletWrapper.java:142)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Thread.java:619)
Caused by: ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:370)
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:352)
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:396)
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:385)
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:83)
    at play.server.ServletWrapper.copyResponse(ServletWrapper.java:493)
    at play.server.ServletWrapper$ServletInvocation.execute(ServletWrapper.java:558)
    at play.Invoker$Invocation.run(Invoker.java:278)
    ... 18 more
Caused by: java.net.SocketException: Connection reset by peer: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:751)
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432)
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347)
    at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:774)
    at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118)
    at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:584)
    at org.apache.coyote.Response.doWrite(Response.java:560)
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:365)
    ... 26 more

我也有类似的问题,但使用Play-1.2.3/Tomcat 6/H2数据库。
我从未真正理解问题的根源,但通过修改部署过程并确保在替换war文件之前完全停止Tomcat,问题得到了解决。
在第一次重新启动Tomcat之前,我还必须删除所有Tomcat临时文件

这一定与Tomcat试图热交换war文件和播放时未正确关闭其资源有关,但在找到有效的解决方法后,我停止了调查。
我发现框架中没有处理某些异常,这导致错误消息和记录的异常与实际问题无关


这个答案可能不在stackoverflow标准中(我不确定是否是同一个问题,我只是提交了一个解决方案),但我觉得这与我的个人经历有关。让我知道我是否应该删除、修改它或任何东西。

对于Play 1.1.1/Tomcat 7.082/无数据库(它的提要包含jersey 2 REST)

我删除了Tomcat/temp和Tomcat/work/Catalina/localhost中的所有临时文件


这为我解决了这个问题

在抛出此异常后,您是否能够处理其他传入请求?Application.index(render())方法确实有效,但其他方法都失败。我的其他API URL从数据库收集数据,在发生此错误后,它们都失败了。有人能解释ClientBortException的根源吗?我可以通过按住F5键一段时间来重现此行为。。。