Repository: tomee Updated Branches: refs/heads/master bd340ec44 -> 0f46bbf5b
TOMEE-2008 trying to make provider loading for JtaEntityManager jpa 2.1 check faster Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/0f46bbf5 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/0f46bbf5 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/0f46bbf5 Branch: refs/heads/master Commit: 0f46bbf5b4c3fecfbef7267460bbfc19c68834d6 Parents: bd340ec Author: rmannibucau <rmannibu...@apache.org> Authored: Fri Jan 27 15:28:01 2017 +0100 Committer: rmannibucau <rmannibu...@apache.org> Committed: Fri Jan 27 15:28:01 2017 +0100 ---------------------------------------------------------------------- .../assembler/classic/EntityManagerFactoryCallable.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/0f46bbf5/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java index 777f412..22cd810 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java @@ -49,6 +49,7 @@ public class EntityManagerFactoryCallable implements Callable<EntityManagerFacto private final Map<ComparableValidationConfig, ValidatorFactory> potentialValidators; private final boolean cdi; private ClassLoader appClassLoader; + private Class<?> provider; public EntityManagerFactoryCallable(final String persistenceProviderClassName, final PersistenceUnitInfoImpl unitInfo, final ClassLoader cl, final Map<ComparableValidationConfig, ValidatorFactory> validators, @@ -61,10 +62,13 @@ public class EntityManagerFactoryCallable implements Callable<EntityManagerFacto } public Class<?> getProvider() { + if (provider != null) { // no need of thread safety + return provider; + } final ClassLoader old = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(appClassLoader); try { - return appClassLoader.loadClass(persistenceProviderClassName); + return (provider = appClassLoader.loadClass(persistenceProviderClassName)); } catch (final ClassNotFoundException e) { throw new IllegalArgumentException(e); } finally {