主题 : HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.Can
级别: 秀才
UID: 55660
积分:98 加为好友
威望: 0 精华: 0
主题:4 回复:41
注册时间:2013-12-09
在线时长:0
1#   发表于:2013-12-11 09:06:11  IP:120.169.*.*
服务器环境:CentOS6.2 + Nginx1.4.4 + Mysql 5.1.60 +Tomcat 7.0.14
顺利安装jeecms 5.1(安装包版),但运行后,不论前台还是后台,都会偶尔出来以下500错误信息。出现该信息号,刷新该页面,又可正常访问。但不定期的还是会出现500。网上查资料貌似是JDBC驱动设置要有个持久性什么的,请问版主,这个该在哪里修改配置文件呢?

HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:

type Exception report

message Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
com.jeecms.common.web.ProcessTimeFilter.doFilter(ProcessTimeFilter.java:35)
root cause

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: 
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
com.sun.proxy.$Proxy57.retrieveUserIdFromSession(Unknown Source)
com.jeecms.cms.web.FrontContextInterceptor.preHandle(FrontContextInterceptor.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:781)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
com.jeecms.common.web.ProcessTimeFilter.doFilter(ProcessTimeFilter.java:35)
root cause

org.hibernate.TransactionException: JDBC begin failed: 
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:96)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
com.sun.proxy.$Proxy57.retrieveUserIdFromSession(Unknown Source)
com.jeecms.cms.web.FrontContextInterceptor.preHandle(FrontContextInterceptor.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:781)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
com.jeecms.common.web.ProcessTimeFilter.doFilter(ProcessTimeFilter.java:35)
root cause

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 300,372 milliseconds ago.  The last packet sent successfully to the server was 1 milliseconds ago.
sun.reflect.GeneratedConstructorAccessor71.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3030)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2916)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3459)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1957)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2107)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2642)
com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5036)
com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:881)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
com.sun.proxy.$Proxy57.retrieveUserIdFromSession(Unknown Source)
com.jeecms.cms.web.FrontContextInterceptor.preHandle(FrontContextInterceptor.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:781)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
com.jeecms.common.web.ProcessTimeFilter.doFilter(ProcessTimeFilter.java:35)
root cause

java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2475)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2927)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2916)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3459)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1957)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2107)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2642)
com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5036)
com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:881)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
com.sun.proxy.$Proxy57.retrieveUserIdFromSession(Unknown Source)
com.jeecms.cms.web.FrontContextInterceptor.preHandle(FrontContextInterceptor.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:781)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
com.jeecms.common.web.ProcessTimeFilter.doFilter(ProcessTimeFilter.java:35)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.

Apache Tomcat/7.0.47
级别: 状元
UID: 33380
积分:50625 加为好友
威望: 21 精华: 3
主题:88 回复:30687
注册时间:2012-05-07
在线时长:0
2#   发表于:2013-12-11 09:12:16  IP:115.251.*.*
java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. 
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2475) 
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2927) 
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2916) 
功成由勤,业精于勤。
级别: 状元
UID: 33380
积分:50625 加为好友
威望: 21 精华: 3
主题:88 回复:30687
注册时间:2012-05-07
在线时长:0
3#   发表于:2013-12-11 09:14:24  IP:115.251.*.*
连接池设置 
  <Resource 
  name= "jdbc/song " 
  type= "javax.sql.DataSource " 
  driverClassName= "com.mysql.jdbc.Driver " 
  password= "haishui " 
  maxIdle= "20 "    你改下你连接池设置
功成由勤,业精于勤。
级别: 状元
UID: 33380
积分:50625 加为好友
威望: 21 精华: 3
主题:88 回复:30687
注册时间:2012-05-07
在线时长:0
4#   发表于:2013-12-11 09:19:38  IP:115.251.*.*
原因大致为:当修改系统日期后Mysql自动关闭已打开的连接,可以数据库连接池(DBCP)还认为这些连接是活动的,如果这时有请求(需要执行读写数据库的操作),连接池就用一个连接去操作数据库,而这个连接在Mysql的连接池中并不存在,所以会出现以上的异常。如果一个连接在和Mysql建立连接时能检查就不会有这样的问题了。 

一个数据库连接池proxool,它有两个属性:一个是test-before-use,还有一个是test-after-use,这两个属性就是在使用前和使用后都要进行对连接的检查,如果连接无效就扔掉再创建一个新的连接,它们的解释如下: 

test-before-use: 

If you set this to true then each connection is tested (with whatever is defined in house-keeping-test-sql) before being served. If a connection fails then it is discarded and another one is picked. If all connections fail a new one is built. If that one fails then you get an SQLException saying so. 

test-after-use: 

If you set this to true then each connection is tested (with whatever is defined in house-keeping-test-sql) after it is closed (that is, returned to the connection pool). If a connection fails then it is discarded. 

于是我们在项目中换上proxool的连接池,再运行并访问系统,更改系统时间,再访问,不但如此,proxool的连接池中的连接的数量,活动数以及每个连接的的具体情况都可以一目了然的看到
功成由勤,业精于勤。
级别: 秀才
UID: 55660
积分:98 加为好友
威望: 0 精华: 0
主题:4 回复:41
注册时间:2013-12-09
在线时长:0
5#   发表于:2013-12-11 09:39:53  IP:120.169.*.*
回复第3楼

请问改哪个文件呢。具体位置是?
级别: 总版主
UID: 10736
积分:148384 加为好友
威望: 205 精华: 42
主题:287 回复:126143
注册时间:2010-09-08
在线时长:15.71
6#   发表于:2013-12-11 09:42:17  IP:115.251.*.*
改你数据库连接池,这和jeecms没有关联,是你数据连接池的问题
路漫漫其修远兮,吾将上下而求索!
级别: 秀才
UID: 55660
积分:98 加为好友
威望: 0 精华: 0
主题:4 回复:41
注册时间:2013-12-09
在线时长:0
7#   发表于:2013-12-11 09:43:08  IP:120.169.*.*
数据连接池一般在哪里改啊,我不懂jsp哦。
级别: 总版主
UID: 10736
积分:148384 加为好友
威望: 205 精华: 42
主题:287 回复:126143
注册时间:2010-09-08
在线时长:15.71
8#   发表于:2013-12-11 09:44:27  IP:115.251.*.*
这需要你研究数据库方面的知识了,你用的mysql数据库版本比较低的吧?你也可以换个mysql*的没你这问题
路漫漫其修远兮,吾将上下而求索!
级别: 秀才
UID: 55660
积分:98 加为好友
威望: 0 精华: 0
主题:4 回复:41
注册时间:2013-12-09
在线时长:0
9#   发表于:2013-12-11 09:46:25  IP:120.169.*.*
是tomcat7的server.xml的<Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
吗?
级别: 状元
UID: 33380
积分:50625 加为好友
威望: 21 精华: 3
主题:88 回复:30687
注册时间:2012-05-07
在线时长:0
10#   发表于:2013-12-11 09:49:47  IP:115.251.*.*
是的
功成由勤,业精于勤。
1 2 > >| 共2页