这异常时我连接SQL server2005数据库的时候抛出来的.不晓得怎么解决.2009-07-09 14:37:41 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] 使用 DBComms.receive 方法期间发生异常。操作:Connection reset。上下文:(2) [Thread[http-8080-8,5,main], IO:c4217, Dbc:71da3]。PktNum:0。TotalReceived:0。PktSize:4,096。
2009-07-09 14:37:41 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] 该连接已关闭。
2009-07-09 14:37:41 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] Already closed.
2009-07-09 14:37:42 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] Already closed.
2009-07-09 14:37:42 [ERROR]-[org.springframework.orm.hibernate3.SessionFactoryUtils] Could not close Hibernate Session
org.hibernate.exception.GenericJDBCException: Cannot close connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:331)
at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:262)
at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:194)
at org.hibernate.impl.SessionImpl.close(SessionImpl.java:289)
at org.springframework.orm.hibernate3.SessionFactoryUtils.doClose(SessionFactoryUtils.java:787)
at org.springframework.orm.hibernate3.SessionFactoryUtils.closeSessionOrRegisterDeferredClose(SessionFactoryUtils.java:775)
at org.springframework.orm.hibernate3.SessionFactoryUtils.access$100(SessionFactoryUtils.java:87)
at org.springframework.orm.hibernate3.SessionFactoryUtils$SpringSessionSynchronization.afterCompletion(SessionFactoryUtils.java:966)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:729)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:701)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:612)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:560)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCloseTransactionAfterThrowing(TransactionAspectSupport.java:285)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:100)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
at $Proxy21.findXxFlowbillByCaller(Unknown Source)
at com.yz.customer.action.play.PlayerAction.listPlayer(PlayerAction.java:131)
at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
2009-07-09 14:37:41 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] 该连接已关闭。
2009-07-09 14:37:41 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] Already closed.
2009-07-09 14:37:42 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] Already closed.
2009-07-09 14:37:42 [ERROR]-[org.springframework.orm.hibernate3.SessionFactoryUtils] Could not close Hibernate Session
org.hibernate.exception.GenericJDBCException: Cannot close connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:331)
at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:262)
at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:194)
at org.hibernate.impl.SessionImpl.close(SessionImpl.java:289)
at org.springframework.orm.hibernate3.SessionFactoryUtils.doClose(SessionFactoryUtils.java:787)
at org.springframework.orm.hibernate3.SessionFactoryUtils.closeSessionOrRegisterDeferredClose(SessionFactoryUtils.java:775)
at org.springframework.orm.hibernate3.SessionFactoryUtils.access$100(SessionFactoryUtils.java:87)
at org.springframework.orm.hibernate3.SessionFactoryUtils$SpringSessionSynchronization.afterCompletion(SessionFactoryUtils.java:966)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:729)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:701)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:612)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:560)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCloseTransactionAfterThrowing(TransactionAspectSupport.java:285)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:100)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
at $Proxy21.findXxFlowbillByCaller(Unknown Source)
at com.yz.customer.action.play.PlayerAction.listPlayer(PlayerAction.java:131)
at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
2009-07-09 14:37:41 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] 使用 DBComms.receive 方法期间发生异常。操作:Connection reset。上下文:(2) [Thread[http-8080-8,5,main], IO:c4217, Dbc:71da3]。PktNum:0。TotalReceived:0。PktSize:4,096。
2009-07-09 14:37:41 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] 该连接已关闭。
2009-07-09 14:37:41 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] Already closed.
2009-07-09 14:37:42 [ERROR]-[org.hibernate.util.JDBCExceptionReporter] Already closed.
2009-07-09 14:37:42 [ERROR]-[org.springframework.orm.hibernate3.SessionFactoryUtils] Could not close Hibernate Session
org.hibernate.exception.GenericJDBCException: Cannot close connection 关闭session或connection前看看他们是不是已经关了。
lazy的数据不能在关闭session后访问,要访问就把lazy取消,或保持session打开状态
目前只会这些
⊙﹏⊙b汗ing
<bean id="sqlserverDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.customerCallcenter.driver}"/>
<property name="url" value="${jdbc.customerCallcenter.url}"/>
<property name="username" value="${jdbc.customerCallcenter.username}"/>
<property name="password" value="${jdbc.customerCallcenter.password}"/>
<property name="maxActive" value="5"/>
</bean> <bean id="sqlserverSpringSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="sqlserverDataSource"/>
</property>
<property name="mappingResources">
<list>
<value>com/yz/customer/pojo/XxFlowbill.hbm.xml</value>
<value>com/yz/customer/pojo/XxAgentinfo.hbm.xml</value>
<value>com/yz/customer/pojo/TRoleGroup.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.customerCallcenter.dialect}</prop>
<prop key="hibernate.query.substitutions">true=1 false=0</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
<bean id="xxFlowbillDao"
class="com.yz.customer.dao.impl.XxFlowbillDaoImpl">
<property name="sessionFactory">
<ref bean="sqlserverSpringSessionFactory" />
</property>
</bean>
感觉不像是lazy的问题,lazy会报session已经关闭,而这里报的是session关闭异常.楼主还是查一下数据库连接.重启数据库\重启应用,然后看一下行不行.
2009-7-8 10:29:21 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.13
07-08 10:29:59 INFO [main] filter.GenericFilterBean - Filter 'encodingFilter' configured successfully
2009-7-8 10:29:59 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2009-7-8 10:29:59 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2009-7-8 10:29:59 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/79 config=null
2009-7-8 10:29:59 org.apache.catalina.startup.Catalina start
信息: Server startup in 38500 ms
07-09 14:37:41 ERROR [http-8080-8] util.JDBCExceptionReporter - 使用 DBComms.receive 方法期间发生异常。操作:Connection reset。上下文:(2) [Thread[http-8080-8,5,main], IO:c4217, Dbc:71da3]。PktNum:0。TotalReceived:0。PktSize:4,096。
07-09 14:37:41 ERROR [http-8080-8] util.JDBCExceptionReporter - 该连接已关闭。
07-09 14:37:41 ERROR [http-8080-8] util.JDBCExceptionReporter - Already closed.
07-09 14:37:42 ERROR [http-8080-8] util.JDBCExceptionReporter - Already closed.
07-09 14:37:42 ERROR [http-8080-8] hibernate3.SessionFactoryUtils - Could not close Hibernate Session
org.hibernate.exception.GenericJDBCException: Cannot close connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:331)
at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:262)
at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:194)
at org.hibernate.impl.SessionImpl.close(SessionImpl.java:289)
at org.springframework.orm.hibernate3.SessionFactoryUtils.doClose(SessionFactoryUtils.java:787)
at org.springframework.orm.hibernate3.SessionFactoryUtils.closeSessionOrRegisterDeferredClose(SessionFactoryUtils.java:775)
at org.springframework.orm.hibernate3.SessionFactoryUtils.access$100(SessionFactoryUtils.java:87)
at org.springframework.orm.hibernate3.SessionFactoryUtils$SpringSessionSynchronization.afterCompletion(SessionFactoryUtils.java:966)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:729)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:701)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:612)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:560)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCloseTransactionAfterThrowing(TransactionAspectSupport.java:285)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:100)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
at $Proxy21.findXxFlowbillByCaller(Unknown Source)
at com.yz.customer.action.play.PlayerAction.listPlayer(PlayerAction.java:131)
at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:393)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:331)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:348)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
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 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
at com.yz.customer.action.ClientAction.handleRequestInternal(ClientAction.java:46)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:348)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
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 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
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:230)
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:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: Already closed.
at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:77)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:180)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.closeConnection(LocalDataSourceConnectionProvider.java:95)
at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:327)
... 61 more
我的数据库配置如下:
<!--message dataSource CustomerUUrmas start -->
<bean id="sqlserverDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.customerCallcenter.driver}"/>
<property name="url" value="${jdbc.customerCallcenter.url}"/>
<property name="username" value="${jdbc.customerCallcenter.username}"/>
<property name="password" value="${jdbc.customerCallcenter.password}"/>
<property name="maxActive" value="5"/>
</bean> <bean id="sqlserverSpringSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="sqlserverDataSource"/>
</property>
<property name="mappingResources">
<list>
<value>com/yz/customer/pojo/XxFlowbill.hbm.xml</value>
<value>com/yz/customer/pojo/XxAgentinfo.hbm.xml</value>
<value>com/yz/customer/pojo/TRoleGroup.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.customerCallcenter.dialect}</prop>
<prop key="hibernate.query.substitutions">true=1 false=0</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
<bean id="xxFlowbillDao"
class="com.yz.customer.dao.impl.XxFlowbillDaoImpl">
<property name="sessionFactory">
<ref bean="sqlserverSpringSessionFactory" />
</property>
</bean>
package com.match.util;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;/**
* 管理session
* @author Administrator
*
*/
public class HibernateFilter implements Filter {
private static SessionFactory factory = null;
private static Logger log = Logger.getRootLogger();
private static ThreadLocal hibernateHolder = new ThreadLocal();
public void destroy() {
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
chain.doFilter(request, response);
} finally {
Session session = (Session)hibernateHolder.get();
if (session != null) {
if (session.isOpen()) {
session.close();
}
hibernateHolder.remove();
log.info("destory SessionFactory");
}
}
} public void init(FilterConfig config) throws ServletException {
try {
Configuration cfg = new Configuration().configure();
factory = cfg.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
throw new ServletException(e);
}
}
public static Session getSession() {
Session session = (Session)hibernateHolder.get();
if (session == null) {
session = factory.openSession();
hibernateHolder.set(session);
}
return session;
}}
不晓得能不能解决Session问题