Summary: | IllegalArgumentException occurs when setting maxActive to smaller than 1. | ||
---|---|---|---|
Product: | Tomcat Modules | Reporter: | Eiji Takahashi <mashmk02> |
Component: | jdbc-pool | Assignee: | Tomcat Developers Mailing List <dev> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P2 | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Hardware: | All | ||
OS: | All | ||
Attachments: | patch |
svn r 1057268 |
Created attachment 26340 [details] patch IllegalArgumentException occurs when setting maxActive to smaller than 1. ----- java.lang.IllegalArgumentException at java.util.concurrent.ArrayBlockingQueue.<init>(ArrayBlockingQueue.java:164) at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:365) at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:130) at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:93) at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:490) at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:219) at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:142) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) at org.apache.naming.NamingContext.lookup(NamingContext.java:826) at org.apache.naming.NamingContext.lookup(NamingContext.java:145) at org.apache.naming.NamingContext.lookup(NamingContext.java:814) at org.apache.naming.NamingContext.lookup(NamingContext.java:159) at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1020) at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:631) at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:237) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:668) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140) at org.apache.catalina.startup.Catalina.start(Catalina.java:596) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431) --- In DBCP, if the negative value is set to maxActive, the pool size is unlimited. However, because ArrayBlockingQueue is used in JDBC-Pool, values that are smaller than 1 cannot be set to maxActive. In my patch, if maxActive is smaller than 1, default value (100) is set to maxActive. Regards.