This BundleActivator provides three different uses of Hibernate in OSGi
environments:
1.) Enterprise OSGi JPA: The OSGi container/runtime is in charge of managing
all of the client bundles' persistence units. The container/runtime is
also in charge of creating and managing the EntityManagerFactory through a
registered PersistenceProvider (this).
2.) Un-managed OSGI JPA: Same as #1, but the container does not manage
the persistence units. Client bundles identify a typical
PersistenceProvider, registered by this activator.
3.) Client bundles create and manage their own SessionFactory. A
SessionFactory is registered as an OSGi ServiceFactory -- each requesting
bundle gets its own instance of a SessionFactory. The use of services,
rather than direct use of Configuration, is necessary to shield users
from ClassLoader issues. See
OsgiSessionFactoryService
for more
information.