Author: veithen
Date: Mon Sep 16 13:04:29 2013
New Revision: 1523620

URL: http://svn.apache.org/r1523620
Log:
In an OSGi environment, we should use factoryPerClassLoader=false.

Modified:
    
webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/locator/Activator.java

Modified: 
webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/locator/Activator.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/locator/Activator.java?rev=1523620&r1=1523619&r2=1523620&view=diff
==============================================================================
--- 
webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/locator/Activator.java
 (original)
+++ 
webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/locator/Activator.java
 Mon Sep 16 13:04:29 2013
@@ -20,6 +20,7 @@ package org.apache.axiom.locator;
 
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMMetaFactoryLocator;
+import org.apache.axiom.om.util.StAXUtils;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
@@ -38,10 +39,18 @@ public class Activator implements Bundle
         OMAbstractFactory.setMetaFactoryLocator(locator);
         tracker = new BundleTracker(context, 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);
     }
 
     public void stop(BundleContext context) throws Exception {
         tracker.close();
         OMAbstractFactory.setMetaFactoryLocator(null);
+        StAXUtils.setFactoryPerClassLoader(true);
     }
 }


Reply via email to