站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题这个问题没人会

这个问题没人会

摘要: 这个问题没人会


大家好:
最近发现,使用hibernate的web工程不能在linux服务器下正常使用,经常出现异常,无法从数据库中查询到记录,下面是全部的描述,如有人解决此问题,将得到最高荣誉奖。。。 。。。

服务器: red flag linux
jsp容器: tomcat 5
jdk: 1.5
数据库: mysql 3
hibernate: 2.1

这是一个网站的后台管理程序,JSP的功能只是从数据库中读取几条记录,然后显示在JSP页面上,开始发布工程时还都很正常,但1天后,发现JSP页面上看不到记录了,也就是说从数据库中读不到任何记录了,经查看日志发现下面异常:


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 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:2690)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2619)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1552)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2978)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:933)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1027)
at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:89)
at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:880)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:273)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:138)
at net.sf.hibernate.loader.Loader.doList(Loader.java:1063)
at net.sf.hibernate.loader.Loader.list(Loader.java:1054)
at net.sf.hibernate.loader.CriteriaLoader.list(CriteriaLoader.java:118)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:3660)
at net.sf.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:238)
at com.safytech.web.pojo.dao.TJobDAO.findTopJob(TJobDAO.java:228)
at com.safytech.web.model.IndexLoad.getTopJobs(IndexLoad.java:68)
at com.safytech.web.model.IndexLoad.loadTops(IndexLoad.java:43)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:177)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.safytech.web.util.CharsetFilter.doFilter(CharsetFilter.java:56)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
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:664)
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)


** END NESTED EXCEPTION **



重启tomcat可以解决,但1天后问题依旧。使用JDBC无任何问题。


以上是问题的全部描述,如有人曾经耳闻、眼见、或经思考后发现其中的原因请回复此贴,本人。。。



不会


最高荣誉奖就20分。。。


第一次好用,第二次就不好用了?
估计是数据库的问题,你的代码有没有关闭数据库连接?


代码一起正常,使用的是eclipse的插件自动生成的 hibernate代码



很简单的问题...........

著名的 mysql 的8小时超时。

在db url里加上autoReconnect=true就可以了。

看mysql的官方资料即可:

http://dev.mysql.com/doc/refman/5.1/zh/connectors.html

MySQL Reference Manual ::
不工作时间超过8小时后,MySQL关闭了连接。你或许需要使用能处理失效连接的连接池,或 使用“autoReconnect”参数(请参见用MySQL ... 更正了处于高利用率模式(autoReconnect=true) 下时的悬挂套接字问题,连接的finalizer将关闭任何在GC上悬挂的套接字。 ...
dev.mysql.com/doc/refman/5.1/zh/connectors.html - 类似网页

High Availability and Clustering(高可用性和簇集)

autoReconnect


驱动程序是否应尝试再次建立失效的和/或死连接?如果允许,对于在失效或死连接上发出的查询(属于当前事务),驱动程序将抛出异常,但在新事务的连接上发出下一个查询时,将尝试再连接。不推荐使用该特性,这是因为,当应用程序不能恰当处理SQLExceptions时,它会造成与会话状态和数据一致性有关的副作用,设计它的目的仅用于下述情况,即,当你无法配置应用程序来恰当处理因死连接和/或无效连接导致的SQLExceptions时。作为可选方式,可将MySQL服务器变量 “wait_timeout”设置为较高的值,而不是默认的8小时。










建议一下,下次不要用什么“没人会”来做标题,
既然你自己真的能够肯定没人会的话,就没必要发帖了。




↑返回目录
前一篇: 大侠路过帮忙解答:EJB中EJBHome中的Create()方法调用过程
后一篇: [高手请进]WSAD5.1的诡异行为[50分]