Skip to content

Commit acafe63

Browse files
committed
HHH-8378 Cleanup during Bundle#stop. Added shutdown unit test.
Conflicts: hibernate-osgi/src/main/java/org/hibernate/osgi/HibernateBundleActivator.java hibernate-osgi/src/test/java/org/hibernate/osgi/test/OsgiTestCase.java
1 parent 2cd2c39 commit acafe63

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

hibernate-osgi/src/main/java/org/hibernate/osgi/HibernateBundleActivator.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.osgi.framework.BundleActivator;
3636
import org.osgi.framework.BundleContext;
3737
import org.osgi.framework.FrameworkUtil;
38+
import org.osgi.framework.ServiceRegistration;
3839

3940
/**
4041
* This BundleActivator provides three different uses of Hibernate in OSGi
@@ -58,34 +59,38 @@
5859
* @author Tim Ward
5960
*/
6061
public class HibernateBundleActivator implements BundleActivator {
61-
62-
private OsgiClassLoader osgiClassLoader;
63-
64-
private OsgiJtaPlatform osgiJtaPlatform;
65-
62+
63+
private ServiceRegistration<?> persistenceProviderService;
64+
private ServiceRegistration<?> sessionFactoryService;
65+
6666
@Override
6767
public void start(BundleContext context) throws Exception {
6868

69-
osgiClassLoader = new OsgiClassLoader();
69+
OsgiClassLoader osgiClassLoader = new OsgiClassLoader();
7070
osgiClassLoader.addBundle( FrameworkUtil.getBundle( Session.class ) );
7171
osgiClassLoader.addBundle( FrameworkUtil.getBundle( HibernatePersistence.class ) );
7272
ClassLoaderHelper.overridenClassLoader = osgiClassLoader;
7373

74-
osgiJtaPlatform = new OsgiJtaPlatform( context );
74+
OsgiJtaPlatform osgiJtaPlatform = new OsgiJtaPlatform( context );
7575

7676
Dictionary properties = new Hashtable();
7777
// In order to support existing persistence.xml files, register
7878
// using the legacy provider name.
7979
properties.put( "javax.persistence.provider", HibernatePersistence.class.getName() );
80-
context.registerService( PersistenceProvider.class.getName(),
80+
persistenceProviderService = context.registerService( PersistenceProvider.class.getName(),
8181
new OsgiPersistenceProviderService( osgiClassLoader, osgiJtaPlatform, context ), properties );
8282

83-
context.registerService( SessionFactory.class.getName(),
83+
sessionFactoryService = context.registerService( SessionFactory.class.getName(),
8484
new OsgiSessionFactoryService( osgiClassLoader, osgiJtaPlatform, context ), new Hashtable());
8585
}
8686

8787
@Override
8888
public void stop(BundleContext context) throws Exception {
89-
// Nothing else to do?
89+
persistenceProviderService.unregister();
90+
persistenceProviderService = null;
91+
sessionFactoryService.unregister();
92+
sessionFactoryService = null;
93+
94+
ClassLoaderHelper.overridenClassLoader = null;
9095
}
9196
}

0 commit comments

Comments
 (0)