<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kxbin
    成功留給有準備的人
    posts - 10,  comments - 35,  trackbacks - 0

    org.hibernate.exception.GenericJDBCException: Cannot release connection

    問題:
        系統采用Spring MVC 2.5 + Spring 2.5 + Hibernate 3.2架構,其中數據源連接池采用的是Apache commons DBCP。問題是這樣的,系統運行一段時間后(大致每隔8小時),訪問系統會出現如下錯誤,再次訪問恢復正常。
    1. org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: Cannot release connection  
    2.  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:583)  
    3.  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)  
    4.  at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)  
    5.  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)  
    6.  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)  
    7.  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)  
    8.   
    9. Caused by: org.hibernate.exception.GenericJDBCException: Cannot release connection  
    10.  at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)  
    11.  at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)  
    12.  at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)  
    13.  at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)  
    14.  at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:449)  
    15.  at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:379)  
    16.  at org.hibernate.jdbc.ConnectionManager.manualDisconnect(ConnectionManager.java:333)  
    17.  at org.hibernate.impl.SessionImpl.disconnect(SessionImpl.java:375)  
    18.  at org.springframework.orm.hibernate3.HibernateTransactionManager.doCleanupAfterCompletion(HibernateTransactionManager.java:744)  
    19.  at org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion(AbstractPlatformTransactionManager.java:989)  
    20.  at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:855)  
    21.  at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:800)  
    22.  at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:339)  
    23.  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)  
    24.  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)  
    25.  at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)  
    26.  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)  
    27.  at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)  
    28.  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    29.  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
    30.  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
    31.  at java.lang.reflect.Method.invoke(Method.java:585)  
    32.  at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:421)  
    33.  at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:136)  
    34.  at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:326)  
    35.  at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:313)  
    36.  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)  
    37.  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)  
    38.  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)  
    39.   36 more  
    40. Caused by: java.sql.SQLException: Already closed.  
    41.  at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:77)  
    42.  at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:180)  
    43.  at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.closeConnection(LocalDataSourceConnectionProvider.java:96)  
    44.  at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:445)  
    45.   62 more  
    解決:

        造成Cannot release connection的原因有很多,要具體問題具體分析。從異常分析,造成這個異常 org.hibernate.exception.GenericJDBCException: Cannot release connection 歸根結底是Caused by: java.sql.SQLException: Already closed. 即連接已關閉。所以解決的辦法就要從DBCP的參數配置入手,見下面的參數配置properties文件。

     

    1. #### :: Apache DBCP :: ####  
    2. jdbc.driverClassName=oracle.jdbc.driver.OracleDriver  
    3. jdbcjdbc.url=jdbc:oracle:thin:@10.165.153.9:1521:PRDC  
    4. jdbc.username=guser  
    5. jdbc.password=guser  
    6. #初始化連接  
    7. jdbc.initialSize=0  
    8. #連接池的最大活動個數  
    9. jdbc.maxActive=20  
    10. #沒有人用連接的時候,最大閑置的連接個數。  
    11. jdbc.maxIdle=100  
    12. #沒有人用連接的時候,最小閑置的連接個數。  
    13. jdbc.minIdle=0  
    14. #超時等待時間以毫秒為單位  
    15. jdbc.maxWait=10000  
    16. #是否自動回收超時連接  
    17. jdbc.removeAbandoned=true  
    18. #設置被遺棄的連接的超時的時間(以秒數為單位),即當一個連接被遺棄的時間超過設置的時間,則它會自動轉換成可利用的連接。默認的超時時間是300秒。  
    19. jdbc.removeAbandonedTimeout=60  
    20. #是否在自動回收超時連接的時候打印連接的超時錯誤  
    21. jdbc.logAbandoned = true  
    22. #給出一條簡單的sql語句進行驗證  
    23. jdbc.validationQuery=select 1 from dual  
    24. #在取出連接時進行有效驗證  
    25. jdbc.testOnBorrow=true  
    其中標紅的兩個參數的作用是對池化連接進行驗證,This will ensure that DBCP only hands out good connections to Hibernate. 故加上這兩個參數后,這個異常就不會再出現了。在Spring中指定數據源如下:

     

     

    1. <!--  使用Apache DBCP連接池 -->  
    2.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
    3.         <property name="driverClassName" value="${jdbc.driverClassName}" />  
    4.         <property name="url" value="${jdbc.url}" />  
    5.         <property name="username" value="${jdbc.username}" />  
    6.         <property name="password" value="${jdbc.password}" />  
    7.         <property name="maxActive" value="${jdbc.maxActive}" />  
    8.         <property name="maxIdle" value="${jdbc.maxIdle}" />  
    9.         <property name="maxWait" value="${jdbc.maxWait}" />  
    10.         <property name="removeAbandoned" value="${jdbc.removeAbandoned}" />  
    11.         <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />  
    12.         <property name="logAbandoned" value="${jdbc.logAbandoned}" />  
    13.         <property name="validationQuery" value="${jdbc.validationQuery}" />  
    14.         <property name="testOnBorrow" value="${jdbc.testOnBorrow}" />  
    15.     </bean>  

     

    posted on 2011-12-09 09:01 kxbin 閱讀(3881) 評論(0)  編輯  收藏 所屬分類: J2EE
    你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經常在別人面前批評某人,其實潛意識中是想接近他。

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(5)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    J2EE

    java技術網站

    Linux

    平時常去的網站

    數據庫

    電影網站

    網站設計

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品四虎在线观看免费| 亚洲精品tv久久久久| 亚洲国产成人久久精品软件| 国产一级淫片免费播放电影| 久久久久免费视频| 国产精品亚洲片在线va| 亚洲AV无码乱码在线观看性色扶| 日韩精品无码免费一区二区三区 | 免费国产黄线在线观看| 国产亚洲精品免费| 亚洲人成依人成综合网| 四虎影视精品永久免费| 嫩草在线视频www免费观看| 亚洲av成人中文无码专区| 亚洲αv久久久噜噜噜噜噜| 国产美女做a免费视频软件| 97免费人妻在线视频| 一级毛片免费播放男男| 亚洲制服丝袜在线播放| 亚洲欧洲国产成人综合在线观看| 精品国产无限资源免费观看| 一级成人a免费视频| 亚洲熟妇无码AV| 亚洲专区先锋影音| 亚洲一级Av无码毛片久久精品| 91网站免费观看| 免费h视频在线观看| 手机永久免费的AV在线电影网| 亚洲一级在线观看| 国产∨亚洲V天堂无码久久久| 国产一区二区三区免费看| 91成年人免费视频| 久久久久免费精品国产| 一个人晚上在线观看的免费视频| 亚洲一区AV无码少妇电影| 亚洲黄色在线观看| 亚洲AV色香蕉一区二区| 亚洲综合av永久无码精品一区二区| 国产禁女女网站免费看| 最近免费中文字幕4| 无码av免费毛片一区二区|