You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2009/12/24 18:28:21 UTC

svn commit: r893788 - in /tomcat/trunk/modules/jdbc-pool: ./ java/org/apache/tomcat/jdbc/pool/ java/org/apache/tomcat/jdbc/pool/jmx/

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org