Return-Path: X-Original-To: apmail-tomee-commits-archive@www.apache.org Delivered-To: apmail-tomee-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A4519C2FB for ; Tue, 19 Mar 2013 11:18:02 +0000 (UTC) Received: (qmail 54779 invoked by uid 500); 19 Mar 2013 11:18:02 -0000 Delivered-To: apmail-tomee-commits-archive@tomee.apache.org Received: (qmail 54723 invoked by uid 500); 19 Mar 2013 11:18:00 -0000 Mailing-List: contact commits-help@tomee.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@tomee.apache.org Delivered-To: mailing list commits@tomee.apache.org Received: (qmail 54699 invoked by uid 99); 19 Mar 2013 11:18:00 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Mar 2013 11:18:00 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Mar 2013 11:17:58 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 4A3112388847; Tue, 19 Mar 2013 11:17:38 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1458224 - in /tomee/tomee/trunk/server: openejb-axis/src/main/java/org/apache/openejb/server/axis/ openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/ openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ openejb-cxf/src/main... Date: Tue, 19 Mar 2013 11:17:37 -0000 To: commits@tomee.apache.org From: rmannibucau@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130319111738.4A3112388847@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rmannibucau Date: Tue Mar 19 11:17:37 2013 New Revision: 1458224 URL: http://svn.apache.org/r1458224 Log: using app classloader instead of class classloader for cxf webservices to be sure to get the right initial context - in embedded mode class classloader is often appclassloader Modified: tomee/tomee/trunk/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisService.java tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Modified: tomee/tomee/trunk/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisService.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisService.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisService.java (original) +++ tomee/tomee/trunk/server/openejb-axis/src/main/java/org/apache/openejb/server/axis/AxisService.java Tue Mar 19 11:17:37 2013 @@ -102,7 +102,7 @@ public class AxisService extends WsServi } } - protected HttpListener createPojoWsContainer(URL moduleBaseUrl, PortData port, String serviceId, Class target, Context context, String contextRoot, Map bdgs, ServiceConfiguration serviceInfos) throws Exception { + protected HttpListener createPojoWsContainer(ClassLoader loader, URL moduleBaseUrl, PortData port, String serviceId, Class target, Context context, String contextRoot, Map bdgs, ServiceConfiguration serviceInfos) throws Exception { ClassLoader classLoader = target.getClassLoader(); // todo build JaxRpcServiceInfo in assembler Modified: tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java (original) +++ tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java Tue Mar 19 11:17:37 2013 @@ -197,9 +197,9 @@ public class CxfRsHttpListener implement } @Override - public void deployPojo(String contextRoot, String fullContext, Class loadedClazz, Application app, Collection injections, + public void deployPojo(ClassLoader loader, String contextRoot, String fullContext, Class loadedClazz, Application app, Collection injections, Context context, WebBeansContext owbCtx, Collection additionalProviders, ServiceConfiguration configuration) { - deploy(contextRoot, loadedClazz, fullContext, new OpenEJBPerRequestPojoResourceProvider(loadedClazz, injections, context, owbCtx), + deploy(contextRoot, loadedClazz, fullContext, new OpenEJBPerRequestPojoResourceProvider(loader, loadedClazz, injections, context, owbCtx), null, app, null, additionalProviders, configuration); } @@ -325,7 +325,7 @@ public class CxfRsHttpListener implement final Object proxy = ProxyEJB.subclassProxy(bc); factory.setResourceProvider(clazz, new NoopResourceProvider(bc.getBeanClass(), proxy)); } else { - factory.setResourceProvider(clazz, new OpenEJBPerRequestPojoResourceProvider(clazz, injections, context, owbCtx)); + factory.setResourceProvider(clazz, new OpenEJBPerRequestPojoResourceProvider(classLoader, clazz, injections, context, owbCtx)); } } Modified: tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java (original) +++ tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java Tue Mar 19 11:17:37 2013 @@ -65,10 +65,10 @@ public class OpenEJBPerRequestPojoResour private BeanCreator creator; private final Collection> contextTypes = new HashSet>(); - public OpenEJBPerRequestPojoResourceProvider(final Class clazz, final Collection injectionCollection, final Context initialContext, final WebBeansContext owbCtx) { + public OpenEJBPerRequestPojoResourceProvider(final ClassLoader loader, final Class clazz, final Collection injectionCollection, final Context initialContext, final WebBeansContext owbCtx) { injections = injectionCollection; webbeansContext = owbCtx; - classLoader = clazz.getClassLoader(); + classLoader = loader; context = (Context) Proxy.newProxyInstance(classLoader, new Class[]{Context.class}, new InitialContextWrapper(initialContext)); constructor = ResourceUtils.findResourceConstructor(clazz, true); Modified: tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java (original) +++ tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java Tue Mar 19 11:17:37 2013 @@ -68,7 +68,7 @@ public class CxfService extends WsServic } } - protected HttpListener createPojoWsContainer(URL moduleBaseUrl, PortData port, String serviceId, Class target, Context context, String contextRoot, Map bdgs, ServiceConfiguration services) { + protected HttpListener createPojoWsContainer(ClassLoader loader, URL moduleBaseUrl, PortData port, String serviceId, Class target, Context context, String contextRoot, Map bdgs, ServiceConfiguration services) { Bus bus = CxfUtil.getBus(); final ClassLoader oldLoader = Thread.currentThread().getContextClassLoader(); @@ -76,7 +76,7 @@ public class CxfService extends WsServic try { CxfCatalogUtils.loadOASISCatalog(bus, moduleBaseUrl, "META-INF/jax-ws-catalog.xml"); - PojoWsContainer container = new PojoWsContainer(bus, port, context, target, bdgs, services); + PojoWsContainer container = new PojoWsContainer(loader, bus, port, context, target, bdgs, services); container.start(); wsContainers.put(serviceId, container); return container; Modified: tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java (original) +++ tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java Tue Mar 19 11:17:37 2013 @@ -44,7 +44,7 @@ import static org.apache.openejb.Injecti public class PojoEndpoint extends CxfEndpoint { private InjectionProcessor injectionProcessor; - public PojoEndpoint(Bus bus, PortData port, Context context, Class instance, + public PojoEndpoint(ClassLoader loader, Bus bus, PortData port, Context context, Class instance, HTTPTransportFactory httpTransportFactory, Map bindings, ServiceConfiguration config) { super(bus, port, context, instance, httpTransportFactory, config); @@ -65,7 +65,9 @@ public class PojoEndpoint extends CxfEnd service = serviceFactory.create(); - // instantiate and inject resources into service + // instantiate and inject resources into service using the app classloader to be sure to get the right InitialContext + final ClassLoader old = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader(loader); try { injectionProcessor = new InjectionProcessor(instance, port.getInjections(), null, null, unwrap(context), bindings); injectionProcessor.createInstance(); @@ -74,6 +76,8 @@ public class PojoEndpoint extends CxfEnd injectCxfResources(implementor); } catch (Exception e) { throw new WebServiceException("Service resource injection failed", e); + } finally { + Thread.currentThread().setContextClassLoader(old); } service.setInvoker(new JAXWSMethodInvoker(implementor)); Modified: tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java (original) +++ tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java Tue Mar 19 11:17:37 2013 @@ -29,17 +29,19 @@ public class PojoWsContainer extends Cxf private final Context context; private final Class target; private final Map bindings; + private final ClassLoader loader; - public PojoWsContainer(Bus bus, PortData port, Context context, Class target, + public PojoWsContainer(ClassLoader loader, Bus bus, PortData port, Context context, Class target, Map bdgs, ServiceConfiguration configuration) { super(bus, port, configuration); if (target == null) throw new NullPointerException("target is null"); this.context = context; this.target = target; this.bindings = bdgs; + this.loader = loader; } protected PojoEndpoint createEndpoint() { - return new PojoEndpoint(bus, port, context, target, httpTransportFactory, bindings, serviceConfiguration); + return new PojoEndpoint(loader, bus, port, context, target, httpTransportFactory, bindings, serviceConfiguration); } } Modified: tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original) +++ tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Tue Mar 19 11:17:37 2013 @@ -678,7 +678,7 @@ public abstract class RESTService implem final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(web, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost); services.add(new DeployedService(address.complete, contextRoot, loadedClazz.getName())); - listener.deployPojo(contextRoot, getFullContext(address.base, contextRoot), loadedClazz, app, injections, context, owbCtx, + listener.deployPojo(classLoader, contextRoot, getFullContext(address.base, contextRoot), loadedClazz, app, injections, context, owbCtx, additionalProviders, config); LOGGER.info("REST Service: " + address.complete + " -> Pojo " + loadedClazz.getName()); Modified: tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java (original) +++ tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java Tue Mar 19 11:17:37 2013 @@ -32,8 +32,9 @@ public interface RsHttpListener extends void deploySingleton(String webContext, String fullContext, Object o, Application appInstance, Collection additionalProviders, ServiceConfiguration serviceInfos); - void deployPojo(String webContext, String fullContext, Class loadedClazz, Application app, Collection injections, - Context context, WebBeansContext owbCtx, Collection additionalProviders, ServiceConfiguration serviceInfos); + void deployPojo(ClassLoader classloader, String webContext, String fullContext, Class loadedClazz, Application app, + Collection injections, Context context, WebBeansContext owbCtx, + Collection additionalProviders, ServiceConfiguration serviceInfos); void deployEJB(String webContext, String fullContext, BeanContext beanContext, Collection additionalProviders, ServiceConfiguration serviceInfos); Modified: tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1458224&r1=1458223&r2=1458224&view=diff ============================================================================== --- tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original) +++ tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Tue Mar 19 11:17:37 2013 @@ -207,7 +207,9 @@ public abstract class WsService implemen protected abstract void destroyEjbWsContainer(String deploymentId); - protected abstract HttpListener createPojoWsContainer(URL moduleBaseUrl, PortData port, String serviceId, Class target, Context context, String contextRoot, Map bindings, ServiceConfiguration configuration) throws Exception; + protected abstract HttpListener createPojoWsContainer(ClassLoader loader, URL moduleBaseUrl, PortData port, String serviceId, + Class target, Context context, String contextRoot, + Map bindings, ServiceConfiguration configuration) throws Exception; protected abstract void destroyPojoWsContainer(String serviceId); @@ -370,7 +372,7 @@ public abstract class WsService implemen pojoConfiguration = PojoUtil.findPojoConfig(pojoConfiguration, appInfo, webApp); - final HttpListener container = createPojoWsContainer(moduleBaseUrl, port, portInfo.serviceLink, + final HttpListener container = createPojoWsContainer(classLoader, moduleBaseUrl, port, portInfo.serviceLink, target, context, webApp.contextRoot, bindings, new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfiguration, target.getName()), appInfo.services));