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

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

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

    posts - 297,  comments - 1618,  trackbacks - 0
         今天一個同事說有個系統出現java.net.SocketException MESSAGE: Broken pipe錯誤,問題描述是這樣的:
         網站很久沒有人登陸后,例如一個晚上沒有登錄,早上看時,出現錯誤,但重啟Tomcat后又不再有問題,錯誤信息如下:
        

    SQL Error: 0, SQLState: 08S01
    [2007-11-20 09:14:30] 72 ERROR [org.hibernate.util.JDBCExceptionReporter]
    Communications link failure due to underlying exception:

    ** BEGIN NESTED EXCEPTION **

    java.net.SocketException
    MESSAGE: Broken pipe

    STACKTRACE:

    java.net.SocketException: Broken pipe
     at java.net.SocketOutputStream.socketWrite0(Native Method)
     at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
     at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
     at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
     at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
     at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2637)
     at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1554)
     at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
     at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
     at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
     at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
     at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
     at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
     at org.hibernate.loader.Loader.doQuery(Loader.java:391)
     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
     at org.hibernate.loader.Loader.loadEntity(Loader.java:1345)
     at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:116)
     at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:101)
     at org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2471)
     at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:351)
     at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:332)
     at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:113)
     at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:151)
     at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:79)
     at org.hibernate.impl.SessionImpl.get(SessionImpl.java:621)
     at org.hibernate.impl.SessionImpl.get(SessionImpl.java:614)
     at com.cotel.dao.BaseDao.getObject(BaseDao.java:180)
     at com.cotel.wfsgprs.bean.systemmanage.LoginBean.login(LoginBean.java:61)
     at com.cotel.wfsgprs.struts.action.login.LoginAction.login(LoginAction.java:70)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:585)
     at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
     at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
     at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
     at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
     at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
     at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
     at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
     at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
     at com.cotel.util.ValidationFilter.doFilter(ValidationFilter.java:60)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
     at com.cotel.util.PagingFilter.doFilter(PagingFilter.java:42)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
     at com.cotel.util.EncodingFilter.doFilter(EncodingFilter.java:28)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
     at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
     at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
     at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
     at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
     at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
     at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
     at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
     at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
     at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
     at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
     at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
     at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
     at java.lang.Thread.run(Thread.java:595)


    ** END NESTED EXCEPTION **

           后會自動關閉已打開的連接,再問了一下,他們用的不是c3p0的數據源,建議他們改成c3p0的數據源,明天就能看到是不是由于這個原因引起的,特此記錄。
           找到解決方案的一篇文章:http://wooce.sharera.com/blog/BlogTopic/35599.htm
           該問題的解決方案摘錄如下:
           06/05/15:
    Q:  用hibernate + mysql數據庫, 出現以下問題: 
    Communication link failure: java.net.SocketException, underlying cause: Broken pipe: Broken pipe 
    ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: Broken pipe: Broken pipe 
    STACKTRACE: java.net.SocketException: Broken pipe: Broken pipe
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:116)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:201)
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1399)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1775)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1020)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1109)
    at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1070)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2027)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:1984)
    at com.mysql.jdbc.Statement.executeQuery(Statement.java:1152) 
    A:   
    1.  Mysql在經過8小時不使用后會自動關閉已打開的連接,摘錄原文如下: 
    I have a servlet/application that works fine for a day, and then stops working overnight 
    MySQL closes connections after 8 hours of inactivity. You either need to use a connection pool that handles stale connections or use the "autoReconnect" parameter (see "Developing Applications with MySQL Connector/J").

    Also, you should be catching SQLExceptions in your application and dealing with them, rather than propagating them all the way until your application exits, this is just good programming practice. MySQL Connector/J will set the SQLState (see java.sql.SQLException.getSQLState() in your APIDOCS) to "08S01" when it encounters network-connectivity issues during the processing of a query. Your application code should then attempt to re-connect to MySQL at this point.
    2.  Should the driver try to re-establish stale or dead connections? If enabled the driver will throw an exception for a queries issued on a stale or dead connection, which belong to the current transaction, but will attempt reconnect before the next query issued on the connection in a new transaction. The use of this feature is not recommended, because it has side effects related to session state and data consistency when applications don'thandle SQLExceptions properly, and is only designed to be used when you are unable to configure your application to handle SQLExceptions resulting from dead andstale connections properly. Alternatively, investigate setting the MySQL wait_timeout system variable to some high value rather than the default of 8 hours.

    http://dev.mysql.com/doc/refman/5.0/en/cj-configuration-properties.html

    好象用了autoReconnect以后會自動重新連接的
    雖然第一次執行失敗了,
    但是以后會自動重新連接的
    3.  在這個頁面找到了第三種方法,即不使用Hibernate內置的連接池(Hibernate強烈推薦不使用但我以前一直在用),改用C3P0連接池,這個連接池會自動處理數據庫連接被關閉的情況。要使用C3P0很簡單,先從Hibernate里把c3p0-0.8.3.jar復制到項目的lib目錄中,再在hibernate.properties里去掉hibernate.c3p0開頭的那些屬性的注釋(使用缺省值或自己需要的數值),這樣Hibernate就會自動使用C3P0代替內置的連接池了。到目前為止前面的問題沒有再出現過。

    以前對Hibernate警告不要使用內置連接池作產品用途沒有太放在心上,這次是一個教訓,所以不論從穩定還是性能的考慮,都應該選擇相對更加成熟的連接池。
    4.  在服務器上過期的‘Waittimeout’基本上是服務器給與的強制性網絡故障。你通過把‘Waittimeout’設置的高點兒就可以改正它,盡管如此,作為一個開發者,你的代碼應該包含相關的異常處理并采取適當的恢復措施,不要都把它們傳到調用堆中。

        在轉貼一下在hibernate中設置c3p0數據源的方法,原文地址:http://www.lifevv.com/tenyo/doc/20070605102040991.html
         內容如下:
        c3p0為open source的JDBC連接池,隨hibernate一起發布。本文介紹了怎么在hibernate里配置使用c3p0。
    c3p0連接池的配置非常簡單,只需要在hibernate.cfg.xml里增加:

            <!-- configuration pool -->
            <property name="c3p0.acquire_increment">1</property>
            <property name="c3p0.idle_test_period">100</property> <!-- seconds -->
            <property name="c3p0.max_size">5</property>
            <property name="c3p0.max_statements">0</property>
            <property name="c3p0.min_size">2</property>
            <property name="c3p0.timeout">90</property> <!-- seconds -->

    另外,還需要在CLASS_PATH里加上c3p0-x.x.x.jar文件(x.x.x為版本號),c3p0-x.x.x.jar文件隨hibernate一起發布,你可以在其lib目錄下找到該文件。

    配置好之后,hibernate便會自動使用c3p0的連接池:C3P0ConnectionProvider

    posted on 2007-11-26 11:16 阿蜜果 閱讀(7555) 評論(0)  編輯  收藏 所屬分類: MySql
    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉Axure RP  (2015年12月出版)
          

          Power Designer系統分析與建模實戰  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294512
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚欧人成精品免费观看| 可以免费看黄视频的网站| 久久亚洲国产精品| 2021在线永久免费视频| 亚洲色成人四虎在线观看| 久久影院亚洲一区| 18级成人毛片免费观看| 色偷偷亚洲男人天堂| 久久亚洲AV午夜福利精品一区| 成人片黄网站A毛片免费| 人妻仑乱A级毛片免费看| 亚洲欧洲国产成人精品| 四虎影在线永久免费四虎地址8848aa | 国拍在线精品视频免费观看| 日韩色视频一区二区三区亚洲| 亚洲AV无码国产在丝袜线观看| 妞干网在线免费视频| 国产成人无码区免费网站| 亚洲色最新高清av网站| 久久亚洲AV无码西西人体| 国产乱码免费卡1卡二卡3卡| 国产又黄又爽胸又大免费视频 | 大地资源在线资源免费观看| 亚洲人成毛片线播放| 亚洲一区二区三区偷拍女厕 | 老司机精品视频免费| 亚洲精品国产专区91在线| 国产亚洲日韩在线三区| 免费鲁丝片一级在线观看| 日韩精品无码免费一区二区三区 | 国产精品成人免费综合| 日本免费污片中国特一级| 男男gvh肉在线观看免费| 亚洲日韩乱码中文无码蜜桃 | 亚洲黄色在线观看视频| 亚洲中文字幕无码一区| 国产一区二区免费在线| 人禽杂交18禁网站免费| 1a级毛片免费观看| 亚洲视频免费在线观看| 久久久久久久99精品免费观看|