<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    DANCE WITH JAVA

    開發(fā)出高質(zhì)量的系統(tǒng)

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    好友之家

    最新評論

    一種產(chǎn)生socket write error的原因(sitemesh 相關(guān))

    最近拿到一個(gè)工程,不停的報(bào)socket write error,雖然不影響正常使用,但是真的很煩,而且會(huì)影響日志的記錄.所以決定找到這個(gè)問題的答案:
    excepion的堆棧信息如下:

    Exception Processing ErrorPage[errorCode=404, location=/404.jsp]
    ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error
        at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:
    327)
        at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:
    293)
        at org.apache.catalina.connector.Response.flushBuffer(Response.java:
    544)
        at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:
    286)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
    136)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
    105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
    107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
    148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
    869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
    667)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:
    527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:
    80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:
    684)
        at java.lang.Thread.run(Thread.java:
    595)
    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:
    746)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:
    433)
        at org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:
    304)
        at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:
    991)
        at org.apache.coyote.Response.action(Response.java:
    182)
        at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:
    322)
         
    13 more

    第一反映是google一下.發(fā)現(xiàn)真是個(gè)大眾性的問題,無數(shù)人在問,很多人在解答,答案不一
    有說weblogic問題的,有說apache+tomcat問題的..但很多都沒有提問者出來確認(rèn)問題解決.
    這說明產(chǎn)生這個(gè)問題的原因很多.現(xiàn)說說我看到的,認(rèn)為的可能的原因:
    解釋一:
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=21359&messageID=136779
    這個(gè)跟數(shù)據(jù)庫沒有關(guān)系,當(dāng)客戶端發(fā)出請求(request)后,如果還沒有完全獲得服務(wù)端的響應(yīng)(response),客戶端與服務(wù)器段的連接斷開(例如斷網(wǎng)、按了“停止”按鈕、或者客戶端瀏覽器關(guān)閉等),服務(wù)器端就會(huì)拋出此Exception
    解釋二:
    http://blogger.org.cn/blog/more.asp?name=lisawater&id=8841
    這個(gè)問題一般是客戶端在連接還沒有完全建立的時(shí)候就取消連接,比如用戶按了瀏覽器上面的“停止”按鈕,一般來說沒有什么問題。但是如果頻繁出現(xiàn),就表示很多客戶端連接到Apache服務(wù)器的響應(yīng)時(shí)間太長了,可能是網(wǎng)絡(luò)的問題或者服務(wù)器性能問題   可能你的網(wǎng)絡(luò)連接存在一些問題,你的數(shù)據(jù)傳輸?shù)臅r(shí)候,可能由于時(shí)間等待的太久,但是server段設(shè)置的連接檢驗(yàn)時(shí)間限制一定,那么就可能出現(xiàn)這種情況的!
    解釋三:
    http://www.kehui.net/html/article/33/33915.html
    經(jīng)常出現(xiàn)的Connection reset by peer: 原因可能是多方面的,不過更常見的原因是:①:服務(wù)器的并發(fā)連接數(shù)超過了其承載量,服務(wù)器會(huì)將其中一些連接Down掉;②:客戶關(guān)掉了瀏覽器,而服務(wù)器還在給客戶端發(fā)送數(shù)據(jù);③:瀏覽器端按了Stop
    上邊這些解釋意思大概差不多,不過側(cè)重點(diǎn)不同,詳細(xì)程度不同,有的從現(xiàn)象,有的從原因,有的從原理.
    感覺這些解答是對的,但是造成這個(gè)現(xiàn)象的原因依然是多樣的.什么才是造成我這個(gè)工程的原因呢 ?我并沒有出現(xiàn)上述的情況,但依然大量存在這種exception幾乎每次都出現(xiàn).
    下邊介紹一下我拿到的工程,這個(gè)工程是基于appfuse變化來的,很多東西類似.因?yàn)閷@個(gè)exception沒有概念
    當(dāng)時(shí)第一反映是排除法,一個(gè)個(gè)去掉工程中的各個(gè)框架,找到原因?yàn)橹?測試的結(jié)果是和sitemesh有關(guān),但記憶中我也用過sitemesh(如果你對sitemesh不了解看這里)沒出過這樣的錯(cuò)誤.建立一個(gè)sitemesh的工程,測試沒問題,把對應(yīng)的配置文件也弄過來全部都一樣,問題出現(xiàn)了.仔細(xì)分析一下,發(fā)現(xiàn)直觀原因是sitemesh的decorators目錄下的裝飾文件中的出現(xiàn)<ww:head/>的情況就會(huì)出這個(gè)exception,刪掉不相關(guān)的東西.再測試,問題又沒了.再次分析.發(fā)現(xiàn)
    <ww:head>和一個(gè)配置的error頁面同時(shí)存在的時(shí)候才會(huì)有這個(gè)問題.去掉任何一個(gè)都不出現(xiàn).為什么呢 ?
    仔細(xì)看一下這個(gè)error頁面404.jsp,發(fā)現(xiàn)一個(gè)問題,404.jsp也使用了sitemesh.分析一下,發(fā)現(xiàn)一個(gè)問題.如果<ww:head/>
    引發(fā)404錯(cuò)誤,跳轉(zhuǎn)到4.4.jsp頁面,404頁面被filter攔截,再次引入decorators中的頁面,也就再次解析<ww:head/>再次造成404錯(cuò)誤.這時(shí)個(gè)死循環(huán).這下明白了.只要確認(rèn)<ww:head/>會(huì)產(chǎn)生404錯(cuò)誤就可以了.確認(rèn)了一下是這個(gè)問題.
    原因找到了,分析一下:
    在使用sitemesh同時(shí)配置一個(gè)異常頁面的時(shí)候太容易產(chǎn)生這個(gè)問題了.同時(shí)異常頁面沒有被sitemesh exclude
    只要decorators中的頁面出現(xiàn)問題,就很容易會(huì)出現(xiàn)這個(gè)exception
    常出現(xiàn)的原因就是引入不存在的文件,js ,image,css等
    原因上邊分析了,死循環(huán).
    總結(jié):
    如果你使用sitemesh,如果你出現(xiàn)這個(gè)異常.第一個(gè)應(yīng)該看的時(shí)decorator中的文件是否會(huì)產(chǎn)生異常.
    另外<ww:head/>是webwork2.2之后才加入的,使用下來發(fā)現(xiàn)了很多問題.這里不一一列舉了.建議盡量少用,

    如果你想看一下效果:
    這里http://www.tkk7.com/Files/dreamstone/sitemesh.rar下載工程,導(dǎo)入eclipse,添加需要的jar文件,然后直接訪問404.jsp就出現(xiàn)了

    posted on 2007-05-18 14:04 dreamstone 閱讀(31446) 評論(7)  編輯  收藏 所屬分類: web框架

    評論

    # re: 一種產(chǎn)生socket write error的原因(sitemesh 相關(guān)) 2007-08-18 09:11 陳志國

    佩服,我也遇到同樣的問題,一直沒有解決,我用了struts2和sitemesh,看來是和你一樣的,馬上試試!  回復(fù)  更多評論   

    # re: 一種產(chǎn)生socket write error的原因(sitemesh 相關(guān)) 2007-11-05 11:16 俗人

    我用的是struts2 的下載 文件 就 下載時(shí)候 取消 下載 就出現(xiàn) 這個(gè)問題
    不知道 可以給個(gè) 具體的解決 方法嗎!~~~
    謝謝  回復(fù)  更多評論   

    # re: 一種產(chǎn)生socket write error的原因(sitemesh 相關(guān))[未登錄] 2008-06-02 11:48 民工

    樓主,我也用的是appfuse1.94,出現(xiàn)這個(gè)問題了。不知樓主最終是如何解決的。  回復(fù)  更多評論   

    # re: 一種產(chǎn)生socket write error的原因(sitemesh 相關(guān)) 2008-11-20 18:17 何明

    解決辦法 修改Web.xml
    <error-page>
    <error-code>404</error-code>
    <location>/error.jsp</location>
    </error-page>

    error.jsp 使用 response.sendRedirect("/index.html");
    主要問題是IE7沒有正常解析應(yīng)用服務(wù)器給的跳轉(zhuǎn)信息,需要我們自己寫代碼顯示地由服務(wù)器重定向到新的頁面 (jsp)
    樣本代碼如下:
    <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
    <%@ page import="org.apache.commons.logging.*" %>
    <html>
    <body>
    <%
    Log log = LogFactory.getLog("error.jsp");
    log.error("error.jsp 調(diào)用 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!-----------------------------");
    response.sendRedirect("/index.html");
    %>
    </body>
    </html>  回復(fù)  更多評論   

    # re: 一種產(chǎn)生socket write error的原因(sitemesh 相關(guān)) 2008-11-21 10:59 Emily

    何明 的方法,我剛試過 哈哈  回復(fù)  更多評論   

    # re: 一種產(chǎn)生socket write error的原因(sitemesh 相關(guān)) 2009-04-26 12:54 何健

    何明的方法可以一試  回復(fù)  更多評論   

    # re: 一種產(chǎn)生socket write error的原因(sitemesh 相關(guān)) 2011-12-31 14:36 十月の海岸


    11-12-31 14:19:25 DEBUG [localhost]:343 - Processing ErrorPage[errorCode=404, location=/common/404.jsp]
    11-12-31 14:19:25 DEBUG [localhost]:343 - Processing ErrorPage[errorCode=404, location=/common/404.jsp]
    控制臺(tái)出現(xiàn)這樣的提示,但是不影響程序的運(yùn)行;公司的框架,不知何解、  回復(fù)  更多評論   

    主站蜘蛛池模板: 蜜桃成人无码区免费视频网站 | AV大片在线无码永久免费| 最近免费中文字幕中文高清| 成人国产网站v片免费观看| 夜夜爽妓女8888视频免费观看| 女人裸身j部免费视频无遮挡| 小说区亚洲自拍另类| 青娱乐在线视频免费观看| 免费一级做a爰片久久毛片潮| j8又粗又长又硬又爽免费视频| 无码毛片一区二区三区视频免费播放| 在线播放免费人成视频网站| 精品国产免费人成网站| 久久精品国产影库免费看| 香港a毛片免费观看| h视频在线免费看| 在线观看视频免费国语| 免费国产在线观看不卡| 亚洲日韩中文无码久久| 亚洲午夜精品久久久久久人妖| 亚洲天堂一区在线| 亚洲av中文无码乱人伦在线观看| 无人视频在线观看免费播放影院| h视频在线免费观看| 无码国产精品一区二区免费3p| 114一级毛片免费| 免费国产成人午夜私人影视| 亚洲中文字幕无码久久综合网| 亚洲网址在线观看你懂的| 亚洲色偷偷偷综合网| 特黄特色的大片观看免费视频| 玖玖在线免费视频| 国产精品视频免费一区二区| 日韩精品电影一区亚洲| 亚洲αv在线精品糸列| 亚洲日本人成中文字幕| 免费激情网站国产高清第一页| 无码成A毛片免费| 日韩成人免费aa在线看| 国产精品亚洲а∨无码播放| 亚洲丝袜中文字幕|