public void stop(BundleContext context) throws Exception { tracker.close(); OMAbstractFactory.setMetaFactoryLocator(null); StAXUtils.setFactoryPerClassLoader(true); log.debug("OSGi support disabled"); } }
public void start(BundleContext context) throws Exception { OSGiOMMetaFactoryLocator locator = new OSGiOMMetaFactoryLocator(context); OMAbstractFactory.setMetaFactoryLocator(locator); // Bundle.STARTING covers the case where the implementation bundle has // "Bundle-ActivationPolicy: lazy". tracker = new BundleTracker(context, Bundle.STARTING | Bundle.ACTIVE, locator); tracker.open(); // In an OSGi environment, the thread context class loader is generally not set in a meaningful way. // Therefore we should use singleton factories. Note that if the StAX API is provided by Geronimo's or // Servicemix's StAX bundle, then this actually doesn't change much because the factory locator code in // these bundles don't care about the thread context class loader anyway. Nevertheless, it prevents // Axiom from creating new factory instances unnecessarily. The setting may be more relevant if the // StAX API is provided by the JRE. StAXUtils.setFactoryPerClassLoader(false); log.debug("OSGi support enabled"); }