<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

    平時常去的網站

    數據庫

    電影網站

    網站設計

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 五月天国产成人AV免费观看| 久久青青草原亚洲av无码| 国产拍拍拍无码视频免费| 亚洲人成网站在线在线观看| 亚洲短视频男人的影院| jlzzjlzz亚洲乱熟在线播放| 国产成人免费ā片在线观看| 久久久久久久91精品免费观看| 日本亚洲欧洲免费天堂午夜看片女人员| 污网站免费在线观看| 亚洲精品无码中文久久字幕| 亚洲人配人种jizz| 亚洲欧洲精品一区二区三区| 亚洲AV永久纯肉无码精品动漫 | 亚洲精品自在在线观看| 免费一级e一片在线播放| 日韩免费无砖专区2020狼| 国产日本一线在线观看免费| 免费福利在线播放| 久久不见久久见免费视频7| 久久免费福利视频| 日本免费人成网ww555在线| 免费播放在线日本感人片| a级毛片免费在线观看| 最近的2019免费中文字幕| 中文字幕免费在线播放| 久久国产一片免费观看| 在线免费视频你懂的| 精品熟女少妇aⅴ免费久久| h视频在线免费观看| 巨胸喷奶水视频www免费视频| 一级毛片试看60分钟免费播放| 精品视频免费在线| xvideos永久免费入口| 久久久WWW成人免费精品| 久久精品无码专区免费| 男人的天堂网免费网站| 在线日本高清免费不卡| 曰批视频免费30分钟成人| 卡1卡2卡3卡4卡5免费视频| 国产精品国产免费无码专区不卡|