[
https://issues.apache.org/jira/browse/DBCP-333?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Krasimir Nedkov updated DBCP-333:
---------------------------------
Affects Version/s: 1.4
> Unable to create a JDBC driver using custom class loader
> --------------------------------------------------------
>
> Key: DBCP-333
> URL: https://issues.apache.org/jira/browse/DBCP-333
> Project: Commons Dbcp
> Issue Type: Bug
> Affects Versions: 1.3, 1.4
> Reporter: Krasimir Nedkov
>
> Hello,
> I'm unable to instantiate my JDBC driver using a custom class loader:
> BasicDataSource ds = new BasicDataSource();
> String connectURL =
> "jdbc:mysql://"+config.getHost()+"/"+config.getDatabaseName();
> ds.setDriverClassName(MySQLStore.MYSQL_DRIVER);
> ds.setDriverClassLoader(config.getClass().getClassLoader());
> .....
> Having a look at the
> org.apache.commons.dbcp.BasicDataSource.createConnectionFactory() method
> implementation, I found that the class loader is actually ignored. In the
> first part of the method there is an attempt to load the class that seems to
> pass successfully, but the loaded class is not assigned to the driverFromCCL
> variable:
> if (driverClassLoader == null) {
> Class.forName(driverClassName);
> } else {
> Class.forName(driverClassName, true, driverClassLoader);
> }
> Then in the second part of the method driverFromCCL is still null and instead
> of instantiating the driver directly, DriverManager.getDriver(url) is called,
> which fails:
> if (driverFromCCL == null) {
> driver = DriverManager.getDriver(url);
> } else {
> // Usage of DriverManager is not possible, as it does not
> // respect the ContextClassLoader
> driver = (Driver) driverFromCCL.newInstance();
> if (!driver.acceptsURL(url)) {
> throw new SQLException("No suitable driver", "08001");
> }
> }
> Kind regards,
> Krasimir
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.