Tomcat 7 作为 HTTP 文件服务器

Posted

技术标签:

【中文标题】Tomcat 7 作为 HTTP 文件服务器【英文标题】:Tomcat 7 as a HTTP file server 【发布时间】:2017-12-06 07:52:37 【问题描述】:

使用 在高负载(大量请求突发后)返回以下错误:

2017 年 7 月 2 日下午 1:42:42 org.glassfish.jersey.server.ServerRuntime$Responder writeResponse 严重:将响应消息实体写入容器输出流时发生 I/O 错误。 org.glassfish.jersey.server.internal.process.MappableException:org.apache.catalina.connector.ClientAbortException:java.io.IOException 在 org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:92) 在 org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) 在 org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130) 在 org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:711) 在 org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444) 在 org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434) 在 org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329) 在 org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 在 org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:315) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:297) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:267) 在 org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 在 org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) 在 org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) 在 org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471) 在 org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425) 在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383) 在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336) 在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 在 org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2549) 在 org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2538) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:748) 引起:org.apache.catalina.connector.ClientAbortException: java.io.IOException

避免此错误的最佳做法是什么?它从何而来?我尝试使用 NIO 模式仍然出现此错误。

【问题讨论】:

【参考方案1】:

ClientAbortException 似乎表明一个客户端放弃了它的连接。

【讨论】:

以上是关于Tomcat 7 作为 HTTP 文件服务器的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 7.0.35 为静态 HTML 文件设置 HTTP 响应标头 Content-Type 字符集

关于tomcat服务器http下载的问题

tomcat原理

将Maven的Web项目部署到windows的Tomcat里

JAVAEE开发工具及环境配置过程

tomcat编译超过64k大小的jsp文件报错原因