小弟的服务器是MAS,操作系统是Linux,老是抛一个很奇怪的问题,如果重启服务器在短时间内这个问题就不会出现,但是一天以后又会出同样的问题,而且将读不到数据库中的数据,所有与数据库相关的操作都将失败。具体异如下:Last packet sent to the server was 1 ms ago.STACKTRACE:com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:  ** BEGIN NESTED EXCEPTION **  java.net.SocketException
MESSAGE: Broken pipeSTACKTRACE: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:2744)
  at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612)
  at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
  at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
  at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
  at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1467)
  at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
  at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
  at org.hibernate.loader.Loader.getResultSet(Loader.java:1668)
  at org.hibernate.loader.Loader.doQuery(Loader.java:662)
  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
  at org.hibernate.loader.Loader.doList(Loader.java:2144)
  at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2028)
  at org.hibernate.loader.Loader.list(Loader.java:2023)
  at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:95)
  at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
  at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
  at com.jixin.hibernate.daos.HireMessageDaoImpl.getHireMessage1(HireMessageDaoImpl.java:185)
  at org.apache.jsp.hire_jsp._jspService(hire_jsp.java:92)
  at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
  at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
  at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at com.jixin.system.tools.CharEncodingFilter.doFilter(CharEncodingFilter.java:32)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Thread.java:619)
** END NESTED EXCEPTION **
Last packet sent to the server was 1 ms ago.





** END NESTED EXCEPTION **
org.hibernate.exception.JDBCConnectionException: could not execute query




Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:
** BEGIN NESTED EXCEPTION **  com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:  ** BEGIN NESTED EXCEPTION **  hibernate配置如下
XML code<property name="hibernate.connection.url">
        jdbc:mysql://localhost/jixinenterprisewebsite?useUnicode=true&amp;characterEncoding=UTF-8
    </property>
    <property name="hibernate.connection.driver_class">
        com.mysql.jdbc.Driver
    </property>
    <property name="hibernate.connection.username">xxxx</property>
    <property name="hibernate.connection.password">xxxx</property>
    <property name="hibernate.dialect">
        org.hibernate.dialect.MySQLDialect
    </property>
    <property name="hibernate.show_sql">false</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="hibernate.current_session_context_class">
        thread
    </property>
    <property name="hibernate.cache.provider_class">
        org.hibernate.cache.EhCacheProvider
    </property>
    <property name="hibernate.cache.use_query_cache">true</property>    <property name="hibernate.connection.provider_class">
        org.hibernate.connection.C3P0ConnectionProvider
    </property>
    <property name="hibernate.connection.pool_size">2</property>
    <!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
    <property name="hibernate.connection.autocommit">false</property>    <!-- c3p0 connection pooling properties -->
    <!-- 数据库连接对象最大持有时间,这个timeout一定要大于MYSQL默认的28800(秒) -->
    <property name="c3p0.timeout">30000</property>
    <!-- 最大可缓存数据库语句对象 -->
    <property name="c3p0.max_statements">50</property>
    <!-- 每隔28000s测试连接是否可用 -->
    <property name="c3p0.idle_test_period">28000</property>
    <property name="c3p0.acquire_increment">1</property>使用技术为SSH1
集成方案如下Java codepublic boolean addMessage(String username, String title, String message) {
        Session session = null;
        try {
            session = HibernateUtils.getSessionFactory().getCurrentSession();            session.beginTransaction();
            Criteria ctr = session.createCriteria(Admin.class);
            Criterion c = Expression.eq("username", username);
            ctr.add(c);
            Admin admin = (Admin) ctr.uniqueResult();
            String name = admin.getName();
            companyMessage.setDate(new Date());
            companyMessage.setMessage(message);
            companyMessage.setName(name);
            companyMessage.setTitle(title);
            session.save(companyMessage);
            session.beginTransaction().commit();
            return true;        } catch (Exception e) {
            e.printStackTrace();
            session.beginTransaction().rollback();
            return false;        }
    }
不知各位是否遇到,什么问题,如何解决,,谢谢