2014-09-26 69 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。您將創建數百個請求...但您將失去其中一些(與池線程,工作人員等相關),您將看到這些失敗請求的例外情況。

我決定不再擔心這件事了。

相關問題