Author: fhanik Date: Thu Dec 24 17:28:20 2009 New Revision: 893788 URL: http://svn.apache.org/viewvc?rev=893788&view=rev Log: Allow all kinds of data sources to be mapped to the connection pool
Modified: tomcat/trunk/modules/jdbc-pool/build.properties.default tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java Modified: tomcat/trunk/modules/jdbc-pool/build.properties.default URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/build.properties.default?rev=893788&r1=893787&r2=893788&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/build.properties.default (original) +++ tomcat/trunk/modules/jdbc-pool/build.properties.default Thu Dec 24 17:28:20 2009 @@ -28,7 +28,7 @@ version.major=1 version.minor=0 version.build=8 -version.patch=.2 +version.patch=.3 version.suffix= # ----- Default Base Path for Dependent Packages ----- Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java?rev=893788&r1=893787&r2=893788&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java Thu Dec 24 17:28:20 2009 @@ -464,10 +464,10 @@ public static DataSource createDataSource(Properties properties,Context context) throws Exception { PoolConfiguration poolProperties = DataSourceFactory.parsePoolProperties(properties); if (poolProperties.getDataSourceJNDI()!=null && poolProperties.getDataSource()==null) { - javax.sql.DataSource jndiDS = null; + javax.sql.CommonDataSource jndiDS = null; try { if (context!=null) { - jndiDS = (javax.sql.DataSource)context.lookup(poolProperties.getDataSourceJNDI()); + jndiDS = (javax.sql.CommonDataSource)context.lookup(poolProperties.getDataSourceJNDI()); } else { log.warn("dataSourceJNDI property is configued, but local JNDI context is null."); } @@ -477,7 +477,7 @@ if (jndiDS==null) { try { context = (Context) (new InitialContext()); - jndiDS = (javax.sql.DataSource)context.lookup(poolProperties.getDataSourceJNDI()); + jndiDS = (javax.sql.CommonDataSource)context.lookup(poolProperties.getDataSourceJNDI()); } catch (NamingException e) { log.warn("The name \""+poolProperties.getDataSourceJNDI()+"\" can not be found in the InitialContext."); } Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java?rev=893788&r1=893787&r2=893788&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java Thu Dec 24 17:28:20 2009 @@ -23,6 +23,7 @@ import java.util.Properties; import java.util.concurrent.Future; +import javax.sql.CommonDataSource; import javax.sql.XAConnection; import org.apache.juli.logging.Log; @@ -1014,14 +1015,14 @@ /** * {...@inheritdoc} */ - public void setDataSource(javax.sql.DataSource ds) { + public void setDataSource(javax.sql.CommonDataSource ds) { getPoolProperties().setDataSource(ds); } /** * {...@inheritdoc} */ - public javax.sql.DataSource getDataSource() { + public CommonDataSource getDataSource() { return getPoolProperties().getDataSource(); } Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java?rev=893788&r1=893787&r2=893788&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolConfiguration.java Thu Dec 24 17:28:20 2009 @@ -18,6 +18,8 @@ import java.util.Properties; +import javax.sql.CommonDataSource; + import org.apache.tomcat.jdbc.pool.PoolProperties.InterceptorDefinition; /** @@ -728,17 +730,17 @@ * will be invoked. * @param ds the {...@link javax.sql.DataSource} to be used for creating connections to be pooled. */ - public void setDataSource(javax.sql.DataSource ds); + public void setDataSource(CommonDataSource ds); /** * Returns a datasource, if one exists that is being used to create connections. * This method will return null if the pool is using a {...@link java.sql.Driver} * @return the {...@link javax.sql.DataSource} to be used for creating connections to be pooled or null if a Driver is used. */ - public javax.sql.DataSource getDataSource(); + public CommonDataSource getDataSource(); /** - * Configure the connection pool to use a DataSource according to {...@link PoolConfiguration#setDataSource(javax.sql.DataSource)} + * Configure the connection pool to use a DataSource according to {...@link PoolConfiguration#setDataSource(CommonDataSource)} * But instead of injecting the object, specify the JNDI location. * After a successful JNDI look, the {...@link PoolConfiguration#getDataSource()} will not return null. * @param jndiDS -the JNDI string @TODO specify the rules here. Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java?rev=893788&r1=893787&r2=893788&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java Thu Dec 24 17:28:20 2009 @@ -25,6 +25,8 @@ import java.util.Properties; import java.util.concurrent.atomic.AtomicInteger; +import javax.sql.CommonDataSource; + import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -75,7 +77,7 @@ protected boolean useLock = false; protected InterceptorDefinition[] interceptors = null; protected int suspectTimeout = 0; - protected javax.sql.DataSource dataSource = null; + protected javax.sql.CommonDataSource dataSource = null; protected String dataSourceJNDI = null; @@ -876,14 +878,14 @@ /** * {...@inheritdoc} */ - public void setDataSource(javax.sql.DataSource ds) { + public void setDataSource(javax.sql.CommonDataSource ds) { this.dataSource = ds; } /** * {...@inheritdoc} */ - public javax.sql.DataSource getDataSource() { + public CommonDataSource getDataSource() { return dataSource; } Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java?rev=893788&r1=893787&r2=893788&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java Thu Dec 24 17:28:20 2009 @@ -178,13 +178,22 @@ xaConnection = xds.getXAConnection(); connection = xaConnection.getConnection(); } - } else { - javax.sql.DataSource ds = poolProperties.getDataSource(); + } else if (poolProperties.getDataSource() instanceof javax.sql.DataSource){ + javax.sql.DataSource ds = (javax.sql.DataSource)poolProperties.getDataSource(); if (poolProperties.getUsername()!=null && poolProperties.getPassword()!=null) { connection = ds.getConnection(poolProperties.getUsername(), poolProperties.getPassword()); } else { connection = ds.getConnection(); } + } else if (poolProperties.getDataSource() instanceof javax.sql.ConnectionPoolDataSource){ + javax.sql.ConnectionPoolDataSource ds = (javax.sql.ConnectionPoolDataSource)poolProperties.getDataSource(); + if (poolProperties.getUsername()!=null && poolProperties.getPassword()!=null) { + connection = ds.getPooledConnection(poolProperties.getUsername(), poolProperties.getPassword()).getConnection(); + } else { + connection = ds.getPooledConnection().getConnection(); + } + } else { + throw new SQLException("DataSource is of unknown class:"+(poolProperties.getDataSource()!=null?poolProperties.getDataSource().getClass():"null")); } } protected void connectUsingDriver() throws SQLException { Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java?rev=893788&r1=893787&r2=893788&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java Thu Dec 24 17:28:20 2009 @@ -25,6 +25,7 @@ import javax.management.Notification; import javax.management.NotificationBroadcasterSupport; import javax.management.NotificationListener; +import javax.sql.CommonDataSource; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -574,14 +575,14 @@ /** * {...@inheritdoc} */ - public void setDataSource(javax.sql.DataSource ds) { + public void setDataSource(javax.sql.CommonDataSource ds) { getPoolProperties().setDataSource(ds); } /** * {...@inheritdoc} */ - public javax.sql.DataSource getDataSource() { + public CommonDataSource getDataSource() { return getPoolProperties().getDataSource(); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org