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