2015-08-13 48 views
0

有時候我無法與以下憑據連接到數據庫薄@:smthing

> java.sql.SQLException: Could not get a valid Connectionexception 

,當我的web應用程序嘗試連接數據庫。我正在使用JDBC,Preparement Statement和作爲Apache Tomcat 6的服務器。當我重新啓動Apache服務器時,此錯誤消失。任何人都可以告訴我這種例外的原因是什麼,我該如何解決它?我相信牙齒矯正是正確的。

下面是完整的日誌:

> Couldn't connect to database with following credentials : jdbc:oracle:thin:@129.1.2.163:1522:TAPPROD/CRANE_TP 
java.sql.SQLException: Could not get a valid Connection... 
    at UtilityPack.DBPack.ConnCacheBean.getPoolConnection(ConnCacheBean.java:203) 
    at UtilityPack.DBPack.ConnCacheBean.getConnection(ConnCacheBean.java:217) 
    at UtilityPack.DBPack.SessionStruct.getNewConnection(SessionStruct.java:881) 
    at CraneInfra.JSPReceiver.beforePreprocessPage(JSPReceiver.java:147) 
    at JSPManager.HAPJSPReceiver.preProcessPage(HAPJSPReceiver.java:424) 
    at org.apache.jsp.CraneDesktop.Login_jsp._jspService(Login_jsp.java:91) 
    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:377) 
    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 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at com.googlecode.psiprobe.Tomcat60AgentValve.invoke(Tomcat60AgentValve.java:30) 
    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.http11.Http11Processor.process(Http11Processor.java:852) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:619) 

回答

1

檢查連接URL執行後關閉連接。您可以使用完全限定的URL,如下所示。 JDBC:預言:瘦:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST =本地主機)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =服務名)))

你可以也使用EasyConnect URL進行測試,如下所示。 = jdbc:oracle:thin:HR/hr @ // localhost:1521/myservicename

我們建議您使用完全限定的URL而不是簡單的連接URL。

0

問題很可能是與你的連接池的配置方式。可能是幾個連接,連接沒有被釋放,或殭屍連接。 (我認爲這是他們叫什麼。)

如何指定這樣的設置退房Tomcat's doc。這是一個真正定製的主題,因此每次嘗試錯誤都是最好的選擇。

0

要麼你已經配置在連接池 太少連接,或者你沒有釋放/關閉連接。

試試你準備好的聲明

<<yourConnection>>.close();