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: [email protected]
For additional commands, e-mail: [email protected]