2014-09-10 4 views
0
는 몇 일 이후, 나는 프로덕션 환경에서 '연결이 이미 닫힌'오류보고하고

:는 Tomcat6는 - 연결이 이미 닫힌

다음은 데이터 소스 구성됩니다 :

<Resource defaultAutoCommit="true" defaultReadOnly="false" 
     driverClassName="oracle.jdbc.OracleDriver" 
     factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
     fairQueue="false" initialSize="10" 
     jdbcInterceptors="ConnectionState" jmxEnabled="true" 
     logAbandoned="true" maxActive="100" maxIdle="50" 
     maxWait="30000" minEvictableIdleTimeMillis="5000" 
     minIdle="10" name="jdbc/OracleApps" password="APPS" 
     removeAbandoned="false" removeAbandonedTimeout="60" 
     testOnBorrow="true" testOnReturn="false" 
     suspectTimeout="60" 
     testWhileIdle="true" timeBetweenEvictionRunsMillis="5000" 
     type="javax.sql.DataSource" 
     url="jdbcurl" 
     useEquals="false" username="APPS" validationInterval="30000" validationQuery="SELECT 2+2 FROM DUAL"/> 

나는 시도 여러 가지 방법으로 구성하지만 여전히 같은 오류가 발생합니다. 어떤 생각이 감사 : 몇 가지 방법에

java.sql.SQLException: Connection has already been closed. 
at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:118) 
at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:94) 
at org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:140) 
at $Proxy0.createStatement(Unknown Source) 
at cx.PooledDataConnection.open(Unknown Source) 
at cx.crm.opportunity.OpportunityHome.getOpportunity(Unknown Source) 
at cx.crm.opportunity.OpportunityHome.getOpportunityByPrimaryKey(Unknown Source) 
at org.apache.jsp.jsp.WOW.convertquote_jsp._jspService(convertquote_jsp.java:559) 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at cx.filter.OrginalURLFilter.doFilter(Unknown Source) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at cx.AppblockerFilter.doFilter(Unknown Source) 
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:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:446) 
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:372) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:409) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 
+0

어떤 tomcat-jdbc 버전을 사용하고 있습니까? 아직도이 문제가 있습니까? – PbxMan

답변

0
풀의 많은 오픈 연결에 있었다 때 무슨 일이 있었 내 경우

과를 나가라고 con.close() 한 번만 이상 더. 또한 마침내 다음 코드가 있습니다.

finally { 
     try { 
       if (con != null) { 
       con.close(); 
       } 
     } catch (SQLException e) {} 
    } 

이것은 연결이 아직 종료되지 않았다고 보장하지 않습니다.

또한 내 tomcat-jdbc.jar 버전이 오래되었습니다. 나는 JDK 1.6에 대해 versicón 7.0.55을 가장 최근 버전으로 바꿨으며, close 메소드를 서버 타임으로 호출하는 경우에도 잘 동작합니다.