Author: rmannibucau Date: Wed Mar 6 06:50:54 2013 New Revision: 1453172 URL: http://svn.apache.org/r1453172 Log: TOMEE-784 multiple applications deployment
Added: tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/MultipleApplicationsTest.java Modified: tomee/tomee/trunk/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Added: tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/MultipleApplicationsTest.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/MultipleApplicationsTest.java?rev=1453172&view=auto ============================================================================== --- tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/MultipleApplicationsTest.java (added) +++ tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/MultipleApplicationsTest.java Wed Mar 6 06:50:54 2013 @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.openejb.server.cxf.rs; + +import org.apache.cxf.jaxrs.client.WebClient; +import org.apache.openejb.jee.WebApp; +import org.apache.openejb.junit.ApplicationComposer; +import org.apache.openejb.server.cxf.rs.beans.MyFirstRestClass; +import org.apache.openejb.server.cxf.rs.beans.MySecondRestClass; +import org.apache.openejb.testing.Classes; +import org.apache.openejb.testing.EnableServices; +import org.apache.openejb.testing.Module; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.core.Application; +import java.util.Collections; +import java.util.Set; + +import static org.junit.Assert.assertEquals; + +@EnableServices("jax-rs") +@RunWith(ApplicationComposer.class) +public class MultipleApplicationsTest { + @Module + @Classes(cdi = true, value = { Application1.class, Application2.class, MyFirstRestClass.class }) + public WebApp war() { + return new WebApp().contextRoot("foo"); + } + + @Test + public void app1() { + assertEquals("Hi from REST World!", WebClient.create("http://localhost:4204/foo/").path("app1/first/hi").get(String.class)); + } + + @Test + public void app2() { + assertEquals("hi bar", WebClient.create("http://localhost:4204/foo/").path("app2/second/hi2/bar").get(String.class)); + } + + @ApplicationPath("app1") + public static class Application1 extends Application { + @Override + public Set<Class<?>> getClasses() { + return Collections.<Class<?>>singleton(MyFirstRestClass.class); + } + } + + @ApplicationPath("app2") + public static class Application2 extends Application { + @Override + public Set<Class<?>> getClasses() { + return Collections.<Class<?>>singleton(MySecondRestClass.class); + } + } +} 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=1453172&r1=1453171&r2=1453172&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 Wed Mar 6 06:50:54 2013 @@ -20,15 +20,7 @@ package org.apache.openejb.server.rest; import org.apache.openejb.BeanContext; import org.apache.openejb.BeanType; import org.apache.openejb.Injection; -import org.apache.openejb.assembler.classic.AppInfo; -import org.apache.openejb.assembler.classic.Assembler; -import org.apache.openejb.assembler.classic.EjbJarInfo; -import org.apache.openejb.assembler.classic.EnterpriseBeanInfo; -import org.apache.openejb.assembler.classic.IdPropertiesInfo; -import org.apache.openejb.assembler.classic.ParamValueInfo; -import org.apache.openejb.assembler.classic.ServiceInfo; -import org.apache.openejb.assembler.classic.ServletInfo; -import org.apache.openejb.assembler.classic.WebAppInfo; +import org.apache.openejb.assembler.classic.*; import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated; import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed; import org.apache.openejb.assembler.classic.util.PojoUtil; @@ -58,19 +50,8 @@ import javax.ws.rs.ext.Provider; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.net.MalformedURLException; -import java.net.Socket; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; +import java.net.*; +import java.util.*; public abstract class RESTService implements ServerService, SelfManaging { @@ -139,13 +120,12 @@ public abstract class RESTService implem try { boolean deploymentWithApplication = "true".equalsIgnoreCase(appInfo.properties.getProperty(OPENEJB_USE_APPLICATION_PROPERTY, APPLICATION_DEPLOYMENT)); if (deploymentWithApplication) { - Application application = null; - boolean appSkipped = false; - String prefix = "/"; - - final Class<?> appClazz; - if (webApp.restApplications.size() == 1) { - final String app = webApp.restApplications.iterator().next(); + Class<?> appClazz; + for (final String app : webApp.restApplications) { + Application application; + boolean appSkipped = false; + String prefix = "/"; + try { appClazz = classLoader.loadClass(app); application = Application.class.cast(appClazz.newInstance()); @@ -202,170 +182,225 @@ public abstract class RESTService implem prefix += wildcard; } } - } - if (deploymentWithApplication) { // don't do it if we detected we should use old deployment - if (appSkipped || application == null) { - application = new InternalApplication(application); + if (deploymentWithApplication) { // don't do it if we detected we should use old deployment + if (appSkipped || application == null) { + application = new InternalApplication(application); - for (final String clazz : webApp.restClass) { - try { - final Class<?> loaded = classLoader.loadClass(clazz); - if (!isProvider(loaded)) { - pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); - if (PojoUtil.findConfiguration(pojoConfigurations, loaded.getName()) != null) { - deploymentWithApplication = false; - logOldDeploymentUsage(loaded.getName()); - break; + for (final String clazz : webApp.restClass) { + try { + final Class<?> loaded = classLoader.loadClass(clazz); + if (!isProvider(loaded)) { + pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); + if (PojoUtil.findConfiguration(pojoConfigurations, loaded.getName()) != null) { + deploymentWithApplication = false; + logOldDeploymentUsage(loaded.getName()); + break; + } + application.getClasses().add(loaded); + } else { + additionalProviders.add(loaded); } - application.getClasses().add(loaded); - } else { - additionalProviders.add(loaded); + } catch (Exception e) { + throw new OpenEJBRestRuntimeException("can't load class " + clazz, e); } - } catch (Exception e) { - throw new OpenEJBRestRuntimeException("can't load class " + clazz, e); - } - } - if (deploymentWithApplication) { - for (final Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) { - application.getClasses().add(ejb.getValue().context.getBeanClass()); } - if (!prefix.endsWith(wildcard)) { - prefix += wildcard; + if (deploymentWithApplication) { + addEjbToApplication(application, restEjbs); + if (!prefix.endsWith(wildcard)) { + prefix += wildcard; + } } } + + if (!application.getClasses().isEmpty() || !application.getSingletons().isEmpty()) { + pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); + deployApplication(appInfo, webApp.contextRoot, restEjbs, classLoader, injections, owbCtx, context, additionalProviders, pojoConfigurations, application, prefix); + } } - if (!application.getClasses().isEmpty() || !application.getSingletons().isEmpty()) { - pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); - deployApplication(appInfo, webApp.contextRoot, restEjbs, classLoader, injections, owbCtx, context, additionalProviders, pojoConfigurations, application, prefix); + if (!deploymentWithApplication) { + fullServletDeployment(appInfo, webApp, webContext, restEjbs, classLoader, injections, owbCtx, context, additionalProviders, pojoConfigurations); } } - } - if (!deploymentWithApplication) { - // The spec says: - // - // "The resources and providers that make up a JAX-RS application are configured via an application-supplied - // subclass of Application. An implementation MAY provide alternate mechanisms for locating resource - // classes and providers (e.g. runtime class scanning) but use of Application is the only portable means of - // configuration." - // - // The choice here is to deploy using the Application if it exists or to use the scanned classes - // if there is no Application. - // - // Like this providing an Application subclass user can totally control deployed services. - - boolean useApp = false; - String appPrefix = webApp.contextRoot; - for (final String app : webApp.restApplications) { // normally a unique one but we support more - appPrefix = webApp.contextRoot; // if multiple application classes reinit it - if (!appPrefix.endsWith("/")) { - appPrefix += "/"; + if (webApp.restApplications.isEmpty()) { + final Application application = new InternalApplication(null); + for (final String clazz : webApp.restClass) { + try { + final Class<?> loaded = classLoader.loadClass(clazz); + if (!isProvider(loaded)) { + pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); + if (PojoUtil.findConfiguration(pojoConfigurations, loaded.getName()) != null) { + deploymentWithApplication = false; + logOldDeploymentUsage(loaded.getName()); + break; + } + application.getClasses().add(loaded); + } else { + additionalProviders.add(loaded); + } + } catch (Exception e) { + throw new OpenEJBRestRuntimeException("can't load class " + clazz, e); + } } + addEjbToApplication(application, restEjbs); - final Application appInstance; - final Class<?> appClazz; - try { - appClazz = classLoader.loadClass(app); - appInstance = Application.class.cast(appClazz.newInstance()); - if (owbCtx.getBeanManagerImpl().isInUse()) { - try { - webContext.inject(appInstance); - } catch (Exception e) { - // not important since not required by the spec + if (deploymentWithApplication) { + if (!application.getClasses().isEmpty() || !application.getSingletons().isEmpty()) { + final String path = appPrefix(webApp, application.getClass()); + final String prefix; + if (path != null) { + prefix = "/" + path + wildcard; + } else { + prefix = "/" + wildcard; } + + pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); + deployApplication(appInfo, webApp.contextRoot, restEjbs, classLoader, injections, owbCtx, context, additionalProviders, pojoConfigurations, application, prefix); } - } catch (Exception e) { - throw new OpenEJBRestRuntimeException("can't create class " + app, e); + } else { + fullServletDeployment(appInfo, webApp, webContext, restEjbs, classLoader, injections, owbCtx, context, additionalProviders, pojoConfigurations); } + } + } else { + fullServletDeployment(appInfo, webApp, webContext, restEjbs, classLoader, injections, owbCtx, context, additionalProviders, pojoConfigurations); + } + } finally { + Thread.currentThread().setContextClassLoader(oldLoader); + } + } - final String path = appPrefix(webApp, appClazz); - if (path != null) { - appPrefix += path; - } + private void addEjbToApplication(Application application, Map<String, EJBRestServiceInfo> restEjbs) { + for (final Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) { + application.getClasses().add(ejb.getValue().context.getBeanClass()); + } + } - final Set<Class<?>> classes = appInstance.getClasses(); - final Set<Object> singletons = appInstance.getSingletons(); + private void fullServletDeployment(final AppInfo appInfo, final WebAppInfo webApp, final WebContext webContext, + final Map<String, EJBRestServiceInfo> restEjbs, final ClassLoader classLoader, + final Collection<Injection> injections, final WebBeansContext owbCtx, + final Context context, final Collection<Object> additionalProviders, + final Collection<IdPropertiesInfo> initPojoConfigurations) { + // The spec says: + // + // "The resources and providers that make up a JAX-RS application are configured via an application-supplied + // subclass of Application. An implementation MAY provide alternate mechanisms for locating resource + // classes and providers (e.g. runtime class scanning) but use of Application is the only portable means of + // configuration." + // + // The choice here is to deploy using the Application if it exists or to use the scanned classes + // if there is no Application. + // + // Like this providing an Application subclass user can totally control deployed services. + + Collection<IdPropertiesInfo> pojoConfigurations = null; + boolean useApp = false; + String appPrefix = webApp.contextRoot; + for (final String app : webApp.restApplications) { + appPrefix = webApp.contextRoot; // if multiple application classes reinit it + if (!appPrefix.endsWith("/")) { + appPrefix += "/"; + } - // look for providers - for (final Class<?> clazz : classes) { - if (isProvider(clazz)) { - additionalProviders.add(clazz); - } - } - for (final Object obj : singletons) { - if (obj != null && isProvider(obj.getClass())) { - additionalProviders.add(obj); - } + final Application appInstance; + final Class<?> appClazz; + try { + appClazz = classLoader.loadClass(app); + appInstance = Application.class.cast(appClazz.newInstance()); + if (owbCtx.getBeanManagerImpl().isInUse()) { + try { + webContext.inject(appInstance); + } catch (Exception e) { + // not important since not required by the spec } + } + } catch (Exception e) { + throw new OpenEJBRestRuntimeException("can't create class " + app, e); + } - for (final Object o : singletons) { - if (o == null || additionalProviders.contains(o)) { - continue; - } + final String path = appPrefix(webApp, appClazz); + if (path != null) { + appPrefix += path; + } - if (hasEjbAndIsNotAManagedBean(restEjbs, o.getClass().getName())) { - // no more a singleton if the ejb is not a singleton...but it is a weird case - deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(o.getClass().getName()).context, additionalProviders, appInfo.services); - } else { - pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); - deploySingleton(webApp.contextRoot, appPrefix, o, appInstance, classLoader, additionalProviders, - new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, o.getClass().getName()), appInfo.services)); - } - } + final Set<Class<?>> classes = appInstance.getClasses(); + final Set<Object> singletons = appInstance.getSingletons(); - for (final Class<?> clazz : classes) { - if (additionalProviders.contains(clazz)) { - continue; - } + // look for providers + for (final Class<?> clazz : classes) { + if (isProvider(clazz)) { + additionalProviders.add(clazz); + } + } + for (final Object obj : singletons) { + if (obj != null && isProvider(obj.getClass())) { + additionalProviders.add(obj); + } + } - if (hasEjbAndIsNotAManagedBean(restEjbs, clazz.getName())) { - deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(clazz.getName()).context, additionalProviders, appInfo.services); - } else { - pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); - deployPojo(webApp.contextRoot, appPrefix, clazz, appInstance, classLoader, injections, context, owbCtx, additionalProviders, - new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, clazz.getName()), appInfo.services)); - } - } + for (final Object o : singletons) { + if (o == null || additionalProviders.contains(o)) { + continue; + } - useApp = useApp || classes.size() + singletons.size() > 0; - LOGGER.info("REST application deployed: " + app); + if (hasEjbAndIsNotAManagedBean(restEjbs, o.getClass().getName())) { + // no more a singleton if the ejb is not a singleton...but it is a weird case + deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(o.getClass().getName()).context, additionalProviders, appInfo.services); + } else { + pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); + deploySingleton(webApp.contextRoot, appPrefix, o, appInstance, classLoader, additionalProviders, + new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, o.getClass().getName()), appInfo.services)); } + } - if (!useApp) { - if (webApp.restApplications.isEmpty() || webApp.restApplications.size() > 1) { - appPrefix = webApp.contextRoot; - } // else keep application prefix + for (final Class<?> clazz : classes) { + if (additionalProviders.contains(clazz)) { + continue; + } - final Set<String> restClasses = new HashSet<String>(webApp.restClass); - restClasses.addAll(webApp.ejbRestServices); + if (hasEjbAndIsNotAManagedBean(restEjbs, clazz.getName())) { + deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(clazz.getName()).context, additionalProviders, appInfo.services); + } else { + pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); + deployPojo(webApp.contextRoot, appPrefix, clazz, appInstance, classLoader, injections, context, owbCtx, additionalProviders, + new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, clazz.getName()), appInfo.services)); + } + } - for (final String clazz : restClasses) { - if (restEjbs.containsKey(clazz)) { - final BeanContext ctx = restEjbs.get(clazz).context; - if (hasEjbAndIsNotAManagedBean(restEjbs, clazz)) { - deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(clazz).context, additionalProviders, appInfo.services); - } else { - deployPojo(webApp.contextRoot, appPrefix, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), context, - owbCtx, additionalProviders, new ServiceConfiguration(ctx.getProperties(), appInfo.services)); - } - } else { - try { - final Class<?> loadedClazz = classLoader.loadClass(clazz); - pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); - deployPojo(webApp.contextRoot, appPrefix, loadedClazz, null, classLoader, injections, context, owbCtx, - additionalProviders, - new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, loadedClazz.getName()), appInfo.services)); - } catch (ClassNotFoundException e) { - throw new OpenEJBRestRuntimeException("can't find class " + clazz, e); - } - } + useApp = useApp || classes.size() + singletons.size() > 0; + LOGGER.info("REST application deployed: " + app); + } + + if (!useApp) { + if (webApp.restApplications.isEmpty() || webApp.restApplications.size() > 1) { + appPrefix = webApp.contextRoot; + } // else keep application prefix + + final Set<String> restClasses = new HashSet<String>(webApp.restClass); + restClasses.addAll(webApp.ejbRestServices); + + for (final String clazz : restClasses) { + if (restEjbs.containsKey(clazz)) { + final BeanContext ctx = restEjbs.get(clazz).context; + if (hasEjbAndIsNotAManagedBean(restEjbs, clazz)) { + deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(clazz).context, additionalProviders, appInfo.services); + } else { + deployPojo(webApp.contextRoot, appPrefix, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), context, + owbCtx, additionalProviders, new ServiceConfiguration(ctx.getProperties(), appInfo.services)); + } + } else { + try { + final Class<?> loadedClazz = classLoader.loadClass(clazz); + pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp); + deployPojo(webApp.contextRoot, appPrefix, loadedClazz, null, classLoader, injections, context, owbCtx, + additionalProviders, + new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, loadedClazz.getName()), appInfo.services)); + } catch (ClassNotFoundException e) { + throw new OpenEJBRestRuntimeException("can't find class " + clazz, e); } } } - } finally { - Thread.currentThread().setContextClassLoader(oldLoader); } } @@ -375,7 +410,7 @@ public abstract class RESTService implem private void deployApplication(final AppInfo appInfo, final String contextRoot, final Map<String, EJBRestServiceInfo> restEjbs, final ClassLoader classLoader, final Collection<Injection> injections, final WebBeansContext owbCtx, final Context context, final Collection<Object> additionalProviders, final Collection<IdPropertiesInfo> pojoConfigurations, final Application application, final String prefix) { // get configuration - Properties configuration = null; + Properties configuration; if (InternalApplication.class.equals(application.getClass())) { final Application original = InternalApplication.class.cast(application).getOriginal(); if (original == null) { @@ -403,8 +438,8 @@ public abstract class RESTService implem services.add(new DeployedService(address.complete, contextRoot, application.getClass().getName())); listener.deployApplication(application, address.complete.substring(0, address.complete.length() - wildcard.length()), nopath.substring(NOPATH_PREFIX.length(), nopath.length() - wildcard.length()), additionalProviders, restEjbs, // app config - classLoader, injections, context, owbCtx, // injection/webapp context - new ServiceConfiguration(configuration, appInfo.services)); // deployment config + classLoader, injections, context, owbCtx, // injection/webapp context + new ServiceConfiguration(configuration, appInfo.services)); // deployment config } private static String appPrefix(final WebAppInfo info, final Class<?> appClazz) { @@ -477,8 +512,8 @@ public abstract class RESTService implem } public void afterApplicationCreated( - @Observes - final AssemblerAfterApplicationCreated event) { + @Observes + final AssemblerAfterApplicationCreated event) { if (!enabled) return; @@ -505,9 +540,7 @@ public abstract class RESTService implem if ("true".equalsIgnoreCase(appInfo.properties.getProperty(OPENEJB_USE_APPLICATION_PROPERTY, APPLICATION_DEPLOYMENT))) { final Application application = new InternalApplication(null); - for (final Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) { - application.getClasses().add(ejb.getValue().context.getBeanClass()); - } + addEjbToApplication(application, restEjbs); // merge configurations at app level since a single deployment is available final List<IdPropertiesInfo> pojoConfigurations = new ArrayList<IdPropertiesInfo>(); @@ -536,16 +569,16 @@ public abstract class RESTService implem } deployApplication(appInfo, next.getValue().path, restEjbs, comp.getClassLoader(), comp.getInjections(), - containerSystem.getAppContext(appInfo.appId).getWebBeansContext(), comp.getJndiContext(), - providers, pojoConfigurations, application, wildcard); + containerSystem.getAppContext(appInfo.appId).getWebBeansContext(), comp.getJndiContext(), + providers, pojoConfigurations, application, wildcard); } else { for (final Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) { final BeanContext ctx = ejb.getValue().context; if (BeanType.MANAGED.equals(ctx.getComponentType())) { deployPojo("", ejb.getValue().path, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), - ctx.getJndiContext(), - containerSystem.getAppContext(appInfo.appId).getWebBeansContext(), - providers, new ServiceConfiguration(ctx.getProperties(), appInfo.services)); + ctx.getJndiContext(), + containerSystem.getAppContext(appInfo.appId).getWebBeansContext(), + providers, new ServiceConfiguration(ctx.getProperties(), appInfo.services)); } else { deployEJB("", ejb.getValue().path, ctx, providers, appInfo.services); } @@ -646,7 +679,7 @@ public abstract class RESTService implem services.add(new DeployedService(address.complete, contextRoot, loadedClazz.getName())); listener.deployPojo(contextRoot, getFullContext(address.base, contextRoot), loadedClazz, app, injections, context, owbCtx, - additionalProviders, config); + additionalProviders, config); LOGGER.info("REST Service: " + address.complete + " -> Pojo " + loadedClazz.getName()); } @@ -658,7 +691,7 @@ public abstract class RESTService implem services.add(new DeployedService(address.complete, context, beanContext.getBeanClass().getName())); listener.deployEJB(context, getFullContext(address.base, context), beanContext, - additionalProviders, new ServiceConfiguration(beanContext.getProperties(), serviceInfos)); + additionalProviders, new ServiceConfiguration(beanContext.getProperties(), serviceInfos)); LOGGER.info("REST Service: " + address.complete + " -> EJB " + beanContext.getEjbName()); } @@ -802,8 +835,8 @@ public abstract class RESTService implem } public void beforeApplicationDestroyed( - @Observes - final AssemblerBeforeApplicationDestroyed event) { + @Observes + final AssemblerBeforeApplicationDestroyed event) { final AppInfo app = event.getApp(); if (deployedApplications.contains(app)) { for (final WebAppInfo webApp : app.webApps) {