Browse Source

Hibernate 4 LocalSessionFactoryBuilder sets thread context ClassLoader (for JBoss 7 compatibility)

Issue: SPR-9846
pull/154/merge
Juergen Hoeller 13 years ago committed by unknown
parent
commit
fe16334dd4
  1. 17
      spring-orm/src/main/java/org/springframework/orm/hibernate4/LocalSessionFactoryBuilder.java

17
spring-orm/src/main/java/org/springframework/orm/hibernate4/LocalSessionFactoryBuilder.java

@ -239,7 +239,22 @@ public class LocalSessionFactoryBuilder extends Configuration { @@ -239,7 +239,22 @@ public class LocalSessionFactoryBuilder extends Configuration {
@Override
@SuppressWarnings("deprecation")
public SessionFactory buildSessionFactory() throws HibernateException {
return super.buildSessionFactory();
ClassLoader appClassLoader = (ClassLoader) getProperties().get(AvailableSettings.APP_CLASSLOADER);
Thread currentThread = Thread.currentThread();
ClassLoader threadContextClassLoader = currentThread.getContextClassLoader();
boolean overrideClassLoader =
(appClassLoader != null && !appClassLoader.equals(threadContextClassLoader));
if (overrideClassLoader) {
currentThread.setContextClassLoader(appClassLoader);
}
try {
return super.buildSessionFactory();
}
finally {
if (overrideClassLoader) {
currentThread.setContextClassLoader(threadContextClassLoader);
}
}
}
}

Loading…
Cancel
Save