2017-07-17 204 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

相关问题