小弟的服务器是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配置如下
<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
集成方案如下public 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; }
}不知各位是否遇到,什么问题,如何解决,,谢谢