TOMEE-1878 ensure we don't use AlternateDriver when we don't need
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/e1b49874 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/e1b49874 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/e1b49874 Branch: refs/heads/tomee-1.7.x Commit: e1b498744751321d33861c458c3b99fe36372c7c Parents: 1965d0f Author: Romain manni-Bucau <[email protected]> Authored: Wed Jul 20 15:10:20 2016 +0200 Committer: Jonathan Gallimore <[email protected]> Committed: Thu Aug 11 17:46:52 2016 +0100 ---------------------------------------------------------------------- .../org/apache/openejb/assembler/classic/Assembler.java | 6 ++++++ .../apache/openejb/config/typed/DataSourceBuilder.java | 2 +- .../apache/openejb/resource/jdbc/DataSourceFactory.java | 5 +++-- .../resources/META-INF/org.apache.openejb/service-jar.xml | 10 +++++++--- 4 files changed, 17 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/e1b49874/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java index 06ce2f3..dad28ac 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java @@ -180,6 +180,8 @@ import javax.resource.spi.ResourceAdapter; import javax.resource.spi.ResourceAdapterInternalException; import javax.resource.spi.XATerminator; import javax.resource.spi.work.WorkManager; +import javax.servlet.ServletContext; +import javax.sql.CommonDataSource; import javax.sql.DataSource; import javax.transaction.TransactionManager; import javax.transaction.TransactionSynchronizationRegistry; @@ -2707,6 +2709,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A } loader = new URLClassLoaderFirst(urls, loader); customLoader = true; + serviceRecipe.setProperty("OpenEJBResourceClasspath", "true"); } } catch (final MalformedURLException e) { throw new OpenEJBException("Unable to create a classloader for " + serviceInfo.id, e); @@ -3151,6 +3154,9 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A if (property.equalsIgnoreCase("ApplicationWide")) { return; } + if (property.equalsIgnoreCase("OpenEJBResourceClasspath")) { + continue; + } if (property.equalsIgnoreCase("transactionManager")) { return; } http://git-wip-us.apache.org/repos/asf/tomee/blob/e1b49874/container/openejb-core/src/main/java/org/apache/openejb/config/typed/DataSourceBuilder.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/typed/DataSourceBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/config/typed/DataSourceBuilder.java index ccfc01c..e9a5bc1 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/config/typed/DataSourceBuilder.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/config/typed/DataSourceBuilder.java @@ -98,7 +98,7 @@ public class DataSourceBuilder extends Resource { setType("javax.sql.DataSource"); setId("DataSource"); - setConstructor("serviceId, jtaManaged, jdbcDriver, definition, maxWaitTime, timeBetweenEvictionRuns, minEvictableIdleTime"); + setConstructor("serviceId, jtaManaged, jdbcDriver, definition, maxWaitTime, timeBetweenEvictionRuns, minEvictableIdleTime, OpenEJBResourceClasspath"); setFactoryName("create"); http://git-wip-us.apache.org/repos/asf/tomee/blob/e1b49874/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java index 72ac587..514e505 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java @@ -88,7 +88,8 @@ public class DataSourceFactory { final String definition, final Duration maxWaitTime, final Duration timeBetweenEvictionRuns, - final Duration minEvictableIdleTime) throws IllegalAccessException, InstantiationException, IOException { + final Duration minEvictableIdleTime, + final boolean useAlternativeDriver) throws IllegalAccessException, InstantiationException, IOException { final Properties properties = asProperties(definition); final boolean flushable = SystemInstance.get().getOptions().get(GLOBAL_FLUSH_PROPERTY, @@ -124,7 +125,7 @@ public class DataSourceFactory { final String jdbcUrl = properties.getProperty("JdbcUrl"); final AlternativeDriver driver; - if (Driver.class.isAssignableFrom(impl) && jdbcUrl != null) { + if (Driver.class.isAssignableFrom(impl) && jdbcUrl != null && useAlternativeDriver) { try { driver = new AlternativeDriver((Driver) impl.newInstance(), jdbcUrl); driver.register(); http://git-wip-us.apache.org/repos/asf/tomee/blob/e1b49874/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml b/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml index e366823..f26b1ca 100644 --- a/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml +++ b/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml @@ -578,7 +578,7 @@ service="Resource" types="javax.sql.DataSource, DataSource" factory-name="create" - constructor="ServiceId, JtaManaged, JdbcDriver, Definition, MaxWaitTime, TimeBetweenEvictionRuns, MinEvictableIdleTime" + constructor="ServiceId, JtaManaged, JdbcDriver, Definition, MaxWaitTime, TimeBetweenEvictionRuns, MinEvictableIdleTime, OpenEJBResourceClasspath" class-name="org.apache.openejb.resource.jdbc.DataSourceFactory"> ServiceId @@ -777,6 +777,8 @@ # use only all set values in this config # will need a lot of properties but allow to not set some values IgnoreDefaultValues = false + + OpenEJBResourceClasspath = false </ServiceProvider> <ServiceProvider @@ -784,7 +786,7 @@ service="Resource" types="javax.sql.DataSource, DataSource" factory-name="create" - constructor="ServiceId, JtaManaged, JdbcDriver, Definition, MaxWaitTime, TimeBetweenEvictionRuns, MinEvictableIdleTime" + constructor="ServiceId, JtaManaged, JdbcDriver, Definition, MaxWaitTime, TimeBetweenEvictionRuns, MinEvictableIdleTime, OpenEJBResourceClasspath" class-name="org.apache.openejb.resource.jdbc.DataSourceFactory"> ServiceId @@ -817,7 +819,7 @@ # # NOTE - The "user" and "password" properties will be passed # explicitly, so they do not need to be included here. - + ConnectionProperties # The default auto-commit state of new connections @@ -966,6 +968,8 @@ # original logical connection wrapper. AccessToUnderlyingConnectionAllowed false + + OpenEJBResourceClasspath = false </ServiceProvider> <!--
