2017-07-17 100 views
-1

我是連接池技術的新手,在Tomcat的JDBC連接池官方指南中,有一個選項可以通過初始化Data Source類來初始化Plain Java Class的池。但是當我嘗試實施相同的時候,它總是給我以下的例外。我的網址是正確的。在不使用JNDI的情況下配置Tomcat連接池

SEVERE: Unable to create initial connections of pool. 
java.sql.SQLException: invalid arguments in call 
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) 

有人能幫助理解使用池屬性設置連接池所需的全部內容嗎?

String dburl="jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=hostname) (PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=shostname2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=Service)))"; 

p.setUrl(dburl); 
p.setDriverClassName("oracle.jdbc.OracleDriver"); 
p.setUsername(username); 
p.setPassword(pwd); 
p.setJmxEnabled(true); 
p.setTestWhileIdle(false); 
p.setTestOnBorrow(true); 
p.setValidationQuery("SELECT 1 from dual"); 
p.setTestOnReturn(false); 
p.setValidationInterval(30000); 
p.setTimeBetweenEvictionRunsMillis(30000); 
p.setMaxActive(100); 
p.setInitialSize(10); 
p.setMaxWait(10000); 
p.setRemoveAbandonedTimeout(600); 
p.setMinEvictableIdleTimeMillis(30000); 
p.setMinIdle(10); 
p.setLogAbandoned(true); 

p.setRemoveAbandoned(true); 
p.setJdbcInterceptors(
     "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" 
     + "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;" 
     + "org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"); 

p.setLogValidationErrors(true); datasource = new org.apache.tomcat.jdbc.pool.DataSource(); 
datasource.setPoolProperties(p); 



Jul 17, 2017 1:47:58 PM org.apache.tomcat.jdbc.pool.ConnectionPool init 
SEVERE: Unable to create initial connections of pool. 
java.sql.SQLException: invalid arguments in call 
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) 
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) 
    at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1160) 
    at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:183) 
    at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346) 
    at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468) 
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314) 
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) 
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) 
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:732) 
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:664) 
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:479) 
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154) 
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) 
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) 
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) 
    at org.telstra.ipdam.utils.DatasourceConnection.getConnection(DatasourceConnection.java:29) 
    at org.telstra.ipdam.persistence.Service.getEnrichmentDetails(Service.java:50) 
    at org.telstra.ipdam.enrichmentResource.EnrichmentUpdate.getEnrichmentMessage(EnrichmentUpdate.java:73) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) 
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) 
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) 
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) 
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) 
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) 
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434) 
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 
+0

嘗試p.setDriverClassName("oracle.jdbc.driver.OracleDriver");請把完整的堆棧跟蹤 – user7294900

+0

請不要轉貼的問題。如果您需要引起注意,則需要在原始問題中添加更多信息。 –

+0

這個問題被標記爲,並且是[tag:jndi]。因此,在標題中「不使用JNDI」的含義是什麼? – EJP

回答

-1

發生因oracle.jdbc驅動程序這個問題,你可以代替p.setDriverClassName("oracle.jdbc.OracleDriver");

+0

我試過了,但沒有奏效。仍然拋出同樣的錯誤。 –

+0

如果這是他不會那麼做的問題。 – EJP