2014-09-26 67 views
2

我不断收到以下错误从WildFly 8.1.0.Final看似随意的基础上安装NetBeans的下运行:是什么导致这个WildFly/Undertow破管错误?

08:51:09,742 ERROR [io.undertow.request] (default task-40) Blocking request failed HttpServerExchange{ GET /web/faces/javax.faces.resource/dynamiccontent.properties}: java.lang.RuntimeException: java.io.IOException: Broken pipe 
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:527) 
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:287) 
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) 
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) 
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) 
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) 
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_20] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_20] 
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_20] 
Caused by: java.io.IOException: Broken pipe 
at sun.nio.ch.FileDispatcherImpl.write0(Native Method) [rt.jar:1.8.0_20] 
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) [rt.jar:1.8.0_20] 
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) [rt.jar:1.8.0_20] 
at sun.nio.ch.IOUtil.write(IOUtil.java:65) [rt.jar:1.8.0_20] 
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:470) [rt.jar:1.8.0_20] 
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150) [xnio-nio-3.2.2.Final.jar:3.2.2.Final] 
at io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:531) 
at io.undertow.conduits.ChunkedStreamSinkConduit.flush(ChunkedStreamSinkConduit.java:256) 
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162) [xnio-api-3.2.2.Final.jar:3.2.2.Final] 
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:100) 
at org.xnio.channels.Channels.flushBlocking(Channels.java:63) [xnio-api-3.2.2.Final.jar:3.2.2.Final] 
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:625) 
at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:451) 
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:525) 
... 9 more 

请求的页面显示没有问题加载,所以比的情况除外日志,我没有注意到任何休息。有任何想法吗?

+0

<听蟋蟀> – Rosswerks 2014-10-25 20:26:22

回答

3

我已经面对类似的问题,并感谢this response的想法,我提前了一点。我要揭露我的案子。

我正在使用Java(Java 7)(javax.ws.rs)创建REST API并将它部署到JBoss服务器(8.x)上。

我的API响应这些路径:

  • /myapi/a
  • /myapi/a?filer=myfilter

所以我这样的代码是:

private static final String FILTER = "filter"; 

@GET 
@Path("/a") 
@Produces(MediaType.APPLICATION_JSON) 
public Object 
foo(@Context UriInfo requestInfo) { 
    LOG.info("Http request: GET /myapi/a"); 
    if (requestParameters.getQueryParameters().containsKey(FILTER)) { 
      return foo(requestInfo.getQueryParameters().get(FILTER)); 
    } 
    // no params 
    return ... 
} 


public Object foo(List<String> filter) { 
    LOG.info(" > Requested filter"); 
    return ...; 
} 

但我是越来越有时这从例外E服务器(不是我的代码) UT005023: Exception handling request to ... sessionState: org.jboss.resteasy.spi.UnhandledException: Response is committed, can't handle exception造成java.io.IOException: Broken pipe

调查它,我遇到一些真正有趣:它只能从Safari浏览器,Chrome浏览器不会重现。所以呢?关键是Safari具有Chrome不具备的功能:当Safari自动完成请求时,它发送请求。 Chrome不会发送请求,直到输入按钮被按下。 ?而由于错误才出现,这是很重要的:

  1. 要求与Safari浏览器的自动完成功能/过滤器= F
  2. 请求(按下回车键),以/一

在这一点上,我不知道原因(它与http头有关)=>作为stephen-c,问题是你正在尝试做的东西,需要改变HTTP响应头...在头后已发送

[编辑]

我几乎可以肯定(99%)我们无法处理这个异常。基本上它是说你失去了一个请求,并且作为警告,服务器告诉你,你不会处理它。

还有另一种重新创建例外的方法:尝试将手指放在F5CMD-R。您将创建数百个请求...但您将失去其中一些(与池线程,工作人员等相关),您将看到这些失败请求的例外情况。

我决定不再担心这件事了。

相关问题