[jboss-cvs] JBossAS SVN: r111008 - projects/jboss-jca/trunk/adapters/src/main/java/org/jboss/jca/adapters/jdbc/local.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Mar 23 10:52:55 EDT 2011
Author: maeste
Date: 2011-03-23 10:52:54 -0400 (Wed, 23 Mar 2011)
New Revision: 111008
Modified:
projects/jboss-jca/trunk/adapters/src/main/java/org/jboss/jca/adapters/jdbc/local/LocalManagedConnectionFactory.java
Log:
adding driverCache instead of use DriverManager
Modified: projects/jboss-jca/trunk/adapters/src/main/java/org/jboss/jca/adapters/jdbc/local/LocalManagedConnectionFactory.java
===================================================================
--- projects/jboss-jca/trunk/adapters/src/main/java/org/jboss/jca/adapters/jdbc/local/LocalManagedConnectionFactory.java 2011-03-23 14:35:44 UTC (rev 111007)
+++ projects/jboss-jca/trunk/adapters/src/main/java/org/jboss/jca/adapters/jdbc/local/LocalManagedConnectionFactory.java 2011-03-23 14:52:54 UTC (rev 111008)
@@ -35,8 +35,10 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import javax.resource.ResourceException;
import javax.resource.spi.ConnectionManager;
@@ -67,6 +69,8 @@
/** The connection properties */
protected String connectionProperties;
+ private static Map<String, Driver> driverCache = new ConcurrentHashMap<String, Driver>();
+
/**
* Constructor
*/
@@ -534,10 +538,7 @@
// Check if the driver is already loaded, if not then try to load it
- if (isDriverLoadedForURL(url))
- {
- return driver;
- } // end of if ()
+ driver = driverCache.get(url.substring(0, url.indexOf(":", 6)));
try
{
@@ -551,8 +552,9 @@
//and is not spec compliant, or is the wrong class.
driver = (Driver) clazz.newInstance();
DriverManager.registerDriver(driver);
- if (isDriverLoadedForURL(url))
- return driver;
+ log.info("class loaded and instance created:" + driver);
+
+ driverCache.put(url.substring(0, url.indexOf(":", 6)), driver);
//We can even instantiate one, it must be the wrong class for the URL.
}
catch (Exception e)
@@ -560,16 +562,17 @@
throw new ResourceException("Failed to register driver for: " + driverClass, e);
}
- throw new ResourceException("Apparently wrong driver class specified for URL: class: " + driverClass +
- ", url: " + url);
+ return driver;
}
private boolean isDriverLoadedForURL(String url)
{
boolean trace = log.isTraceEnabled();
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
try
{
+ Thread.currentThread().setContextClassLoader(getClassLoaderPlugin().getClassLoader());
driver = DriverManager.getDriver(url);
if (trace)
log.trace("Driver already registered for url: " + url);
@@ -577,10 +580,15 @@
}
catch (Exception e)
{
+ log.info("Driver not yet registered for url: " + url);
if (trace)
log.trace("Driver not yet registered for url: " + url);
return false;
}
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
}
/**
More information about the jboss-cvs-commits
mailing list