无法使用以下凭据连接到数据库:jdbc:oracle:thin @:smthing

时间:2015-08-13 12:22:28

标签: java oracle tomcat jdbc

有时我会

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

当我的网络应用尝试连接数据库时。我正在使用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)

3 个答案:

答案 0 :(得分:1)

检查连接网址。您可以使用完全限定的URL,如下所示。 jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = tcp)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = servicename)))

您还可以使用EasyConnect网址进行测试,如下所示。 = JDBC:预言:瘦:HR /小时@ //本地主机:1521 /服务名

我们建议使用完全限定的网址,而不是简单的连接网址。

答案 1 :(得分:0)

问题可能与您的连接池配置方式有关。可能是几个连接,连接没有被释放,或僵尸连接。 (我认为这就是所谓的。)

查看Tomcat's doc有关如何指定此类设置的信息。这是一个每次真正定制的主题,因此更有可能逐个试错是最好的选择。

答案 2 :(得分:0)

您在连接池中配置了太少的连接 或者您没有发布/关闭连接。

尝试在执行准备好的声明后关闭连接

 <<yourConnection>>.close();