You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/03/07 17:49:14 UTC

svn commit: r1298018 - /openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java

Author: rmannibucau
Date: Wed Mar  7 16:49:14 2012
New Revision: 1298018

URL: http://svn.apache.org/viewvc?rev=1298018&view=rev
Log:
better classloading management for jaxrs providers

Modified:
    openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java

Modified: openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1298018&r1=1298017&r2=1298018&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java (original)
+++ openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java Wed Mar  7 16:49:14 2012
@@ -62,7 +62,7 @@ public class CxfRsHttpListener implement
     public static final String OPENEJB_CXF_JAXRS_PROVIDERS_SUFFIX = ".providers";
     public static final String DEFAULT_CXF_JAXRS_PROVIDERS_KEY = "default";
 
-    private static final List<?> PROVIDERS = createProviderList("");
+    private static final List<?> PROVIDERS = createProviderList("", CxfRsHttpListener.class.getClassLoader());
 
     private HTTPTransportFactory transportFactory;
     private AbstractHTTPDestination destination;
@@ -106,7 +106,7 @@ public class CxfRsHttpListener implement
         factory.setDestinationFactory(transportFactory);
         factory.setBus(transportFactory.getBus());
         factory.setAddress(address);
-        factory.setProviders(createProviderList(nameForProviders(clazz)));
+        factory.setProviders(createProviderList(nameForProviders(clazz), clazz.getClassLoader()));
         if (rp != null) {
             factory.setResourceProvider(rp);
         }
@@ -137,7 +137,7 @@ public class CxfRsHttpListener implement
         server.stop();
     }
 
-    private static List<?> createProviderList(String prefix) {
+    private static List<?> createProviderList(final String prefix, final ClassLoader loader) {
         String key;
         if (prefix == null || prefix.trim().isEmpty()) {
             key = OPENEJB_CXF_JAXRS_PROVIDERS_KEY;
@@ -160,11 +160,6 @@ public class CxfRsHttpListener implement
 
         if (providersProperty != null && !providersProperty.trim().isEmpty()) {
             String[] providers = providersProperty.split(",|;| ");
-            ClassLoader cl = Thread.currentThread().getContextClassLoader();
-            if (cl == null) {
-                cl = CxfRsHttpListener.class.getClassLoader();
-            }
-
             List<Object> providerList = new ArrayList<Object>();
             for (String provider : providers) {
                 if (DEFAULT_CXF_JAXRS_PROVIDERS_KEY.equals(provider)) {
@@ -172,11 +167,11 @@ public class CxfRsHttpListener implement
                     providerList.add(jaxb);
                 } else {
                     try {
-                        Class<?> providerClass = cl.loadClass(provider);
+                        Class<?> providerClass = loader.loadClass(provider);
                         Object providerInstance = providerClass.newInstance();
                         providerList.add(providerInstance);
                     } catch (Exception e) {
-                        LOGGER.error("can't add jax-rs provider " + provider, e);
+                        LOGGER.error("can't add jax-rs provider " + provider + " in the current webapp"); // don't print this exception
                     }
                 }
             }