Modified: openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java (original) +++ openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java Thu Aug 16 13:02:53 2012 @@ -28,19 +28,17 @@ import org.apache.cxf.jaxws.handler.soap import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean; import org.apache.cxf.transport.http.HTTPTransportFactory; import org.apache.openejb.BeanContext; +import org.apache.openejb.assembler.classic.ServiceInfo; import org.apache.openejb.core.webservices.JaxWsUtils; import org.apache.openejb.core.webservices.PortData; import org.apache.openejb.server.cxf.ConfigureCxfSecurity; import org.apache.openejb.server.cxf.CxfEndpoint; -import org.apache.openejb.server.cxf.CxfService; import org.apache.openejb.server.cxf.CxfServiceConfiguration; import org.apache.openejb.server.cxf.JaxWsImplementorInfoImpl; import javax.xml.ws.WebServiceException; -import java.util.HashMap; +import java.util.Collection; import java.util.List; -import java.util.Map; -import java.util.Properties; /** * A web service endpoint which invokes an EJB container. @@ -48,8 +46,8 @@ import java.util.Properties; public class EjbEndpoint extends CxfEndpoint { private final BeanContext beanContext; - public EjbEndpoint(Bus bus, PortData portData, BeanContext beanContext, HTTPTransportFactory httpTransportFactory) { - super(bus, portData, beanContext.getJndiEnc(), beanContext.getBeanClass(), httpTransportFactory); + public EjbEndpoint(Bus bus, PortData portData, BeanContext beanContext, HTTPTransportFactory httpTransportFactory, Collection<ServiceInfo> services) { + super(bus, portData, beanContext.getJndiEnc(), beanContext.getBeanClass(), httpTransportFactory, services); this.beanContext = beanContext; String bindingURI = JaxWsUtils.getBindingURI(portData.getBindingID()); @@ -69,25 +67,6 @@ public class EjbEndpoint extends CxfEndp return (Class) this.implementor; } - @Override - protected Map<String, Object> getEndpointProperties() { - final Map<String, Object> map = new HashMap<String, Object>(); - for (Map.Entry<Object, Object> entry : port.getProperties().entrySet()) { - map.put(entry.getKey().toString(), entry.getValue()); - } - return map; - } - - @Override - protected Properties getFeaturesProperties() { - return port.getProperties(); - } - - @Override - protected String getFeaturePropertyKey() { - return CxfService.OPENEJB_JAXWS_CXF_FEATURES; - } - protected void init() { // configure handlers try {
Modified: openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java (original) +++ openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java Thu Aug 16 13:02:53 2012 @@ -19,19 +19,22 @@ package org.apache.openejb.server.cxf.ej import org.apache.cxf.Bus; import org.apache.openejb.BeanContext; +import org.apache.openejb.assembler.classic.ServiceInfo; import org.apache.openejb.core.webservices.PortData; import org.apache.openejb.server.cxf.CxfWsContainer; +import java.util.Collection; + public class EjbWsContainer extends CxfWsContainer { private final BeanContext beanContext; - public EjbWsContainer(Bus bus, PortData port, BeanContext beanContext) { - super(bus, port); + public EjbWsContainer(Bus bus, PortData port, BeanContext beanContext, Collection<ServiceInfo> services) { + super(bus, port, services); if (beanContext == null) throw new NullPointerException("deploymentInfo is null"); this.beanContext = beanContext; } protected EjbEndpoint createEndpoint() { - return new EjbEndpoint(bus, port, beanContext, httpTransportFactory); + return new EjbEndpoint(bus, port, beanContext, httpTransportFactory, availableServices); } } Modified: openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java (original) +++ openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java Thu Aug 16 13:02:53 2012 @@ -27,31 +27,26 @@ import org.apache.cxf.resource.ResourceM import org.apache.cxf.resource.ResourceResolver; import org.apache.cxf.transport.http.HTTPTransportFactory; import org.apache.openejb.InjectionProcessor; +import org.apache.openejb.assembler.classic.ServiceInfo; import org.apache.openejb.core.webservices.JaxWsUtils; import org.apache.openejb.core.webservices.PortData; -import org.apache.openejb.loader.SystemInstance; import org.apache.openejb.server.cxf.CxfEndpoint; -import org.apache.openejb.server.cxf.CxfService; import org.apache.openejb.server.cxf.CxfServiceConfiguration; import org.apache.openejb.server.cxf.JaxWsImplementorInfoImpl; import javax.naming.Context; import javax.xml.ws.WebServiceException; -import java.util.HashMap; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Properties; import static org.apache.openejb.InjectionProcessor.unwrap; public class PojoEndpoint extends CxfEndpoint { - public static final String OPENEJB_JAXWS_READ_POJO_PROPERTIES = "openejb.jaxws.read-pojo-properties"; // boolean to force it (perf reason) - public static final String OPENEJB_JAXWS_POJO_CONFIG_PREFIX = "openejb.jaxws.pojo.config."; // prefix to avoid conflicts - private InjectionProcessor<Object> injectionProcessor; - public PojoEndpoint(Bus bus, PortData port, Context context, Class<?> instance, HTTPTransportFactory httpTransportFactory, Map<String, Object> bindings) { - super(bus, port, context, instance, httpTransportFactory); + public PojoEndpoint(Bus bus, PortData port, Context context, Class<?> instance, HTTPTransportFactory httpTransportFactory, Map<String, Object> bindings, Collection<ServiceInfo> services) { + super(bus, port, context, instance, httpTransportFactory, services); String bindingURI = null; if (port.getBindingID() != null) { @@ -91,30 +86,6 @@ public class PojoEndpoint extends CxfEnd injector.inject(implementor); } - @Override - protected Properties getFeaturesProperties() { - if (SystemInstance.get().getOptions().get(OPENEJB_JAXWS_READ_POJO_PROPERTIES, false)) { - return null; - } - return SystemInstance.get().getProperties(); - } - - @Override - protected Map<String, Object> getEndpointProperties() { - if (SystemInstance.get().getOptions().get(OPENEJB_JAXWS_READ_POJO_PROPERTIES, false)) { - final String prefix = OPENEJB_JAXWS_POJO_CONFIG_PREFIX + getImplementorClass().getName() + "."; - final Map<String, Object> map = new HashMap<String, Object>(); - for (Map.Entry<Object, Object> entry : SystemInstance.get().getProperties().entrySet()) { - final String key = entry.getKey().toString(); - if (key.startsWith(prefix)) { - map.put(key.substring(prefix.length()), entry.getValue()); - } - } - return map; - } - return null; - } - protected void init() { // configure and inject handlers try { @@ -136,9 +107,4 @@ public class PojoEndpoint extends CxfEnd // shutdown server super.stop(); } - - @Override - protected String getFeaturePropertyKey() { - return getImplementorClass().getName() + "." + CxfService.OPENEJB_JAXWS_CXF_FEATURES; - } } Modified: openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java (original) +++ openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java Thu Aug 16 13:02:53 2012 @@ -18,10 +18,12 @@ package org.apache.openejb.server.cxf.pojo; import org.apache.cxf.Bus; +import org.apache.openejb.assembler.classic.ServiceInfo; import org.apache.openejb.core.webservices.PortData; import org.apache.openejb.server.cxf.CxfWsContainer; import javax.naming.Context; +import java.util.Collection; import java.util.Map; public class PojoWsContainer extends CxfWsContainer { @@ -30,8 +32,8 @@ public class PojoWsContainer extends Cxf private final Map<String, Object> bindings; - public PojoWsContainer(Bus bus, PortData port, Context context, Class target, Map<String, Object> bdgs) { - super(bus, port); + public PojoWsContainer(Bus bus, PortData port, Context context, Class target, Map<String, Object> bdgs, Collection<ServiceInfo> services) { + super(bus, port, services); if (target == null) throw new NullPointerException("target is null"); this.context = context; this.target = target; @@ -39,6 +41,6 @@ public class PojoWsContainer extends Cxf } protected PojoEndpoint createEndpoint() { - return new PojoEndpoint(bus, port, context, target, httpTransportFactory, bindings); + return new PojoEndpoint(bus, port, context, target, httpTransportFactory, bindings, availableServices); } } Modified: openejb/trunk/openejb/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/FeatureTest.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/FeatureTest.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/FeatureTest.java (original) +++ openejb/trunk/openejb/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/FeatureTest.java Thu Aug 16 13:02:53 2012 @@ -4,7 +4,10 @@ import org.apache.cxf.Bus; import org.apache.cxf.endpoint.Server; import org.apache.cxf.feature.AbstractFeature; import org.apache.openejb.OpenEjbContainer; +import org.apache.openejb.config.DeploymentLoader; import org.apache.openejb.config.EjbModule; +import org.apache.openejb.config.sys.Resources; +import org.apache.openejb.config.sys.Service; import org.apache.openejb.jee.EjbJar; import org.apache.openejb.jee.SingletonBean; import org.apache.openejb.jee.oejb3.EjbDeployment; @@ -26,6 +29,7 @@ public class FeatureTest { public Properties config() { return new Properties() {{ setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true"); + setProperty(DeploymentLoader.OPENEJB_ALTDD_PREFIX, "feature"); }}; } @@ -42,6 +46,25 @@ public class FeatureTest { final EjbModule module = new EjbModule(jar); module.setOpenejbJar(openejbJar); + final Resources resources = new Resources(); + + final Service service = new Service("my-feature", null, null, null); + service.setClassName(MyFeature.class.getName()); + resources.add(service); + + final Service properties = new Service("my-props", null, null, null); + properties.setClassName(Properties.class.getName()); + properties.getProperties().setProperty("faultStackTraceEnabled", "true"); + resources.add(properties); + + final Service beanService = new Service("bean-config", null, null, null); + beanService.setClassName(AuthenticatorServiceBean.class.getName()); + beanService.getProperties().setProperty("cxf.jaxws.features", "my-feature"); + beanService.getProperties().setProperty("cxf.jaxws.properties", "my-props"); + resources.add(beanService); + + module.initResources(resources); + return module; } Modified: openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original) +++ openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Thu Aug 16 13:02:53 2012 @@ -17,26 +17,6 @@ package org.apache.openejb.server.rest; -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.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 javax.naming.Context; -import javax.ws.rs.ApplicationPath; -import javax.ws.rs.Path; -import javax.ws.rs.core.Application; -import javax.ws.rs.core.UriBuilder; import org.apache.openejb.BeanContext; import org.apache.openejb.BeanType; import org.apache.openejb.Injection; @@ -44,6 +24,7 @@ import org.apache.openejb.assembler.clas 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.ServiceInfo; import org.apache.openejb.assembler.classic.WebAppInfo; import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated; import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed; @@ -61,6 +42,27 @@ import org.apache.openejb.util.LogCatego import org.apache.openejb.util.Logger; import org.apache.webbeans.config.WebBeansContext; +import javax.naming.Context; +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.Path; +import javax.ws.rs.core.Application; +import javax.ws.rs.core.UriBuilder; +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.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; + public abstract class RESTService implements ServerService, SelfManaging { public static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB_RS, RESTService.class); private static final boolean OLD_WEBSERVICE_DEPLOYMENT = SystemInstance.get().getOptions().get("openejb.webservice.old-deployment", false); @@ -158,17 +160,17 @@ public abstract class RESTService implem if (hasEjbAndIsNotAManagedBean(restEjbs, o.getClass())) { // no more a singleton if the ejb is not a singleton...but it is a weird case - deployEJB(appPrefix, restEjbs.get(o.getClass().getName()).context, additionalProviders); + deployEJB(appPrefix, restEjbs.get(o.getClass().getName()).context, additionalProviders, appInfo.services); } else { - deploySingleton(appPrefix, o, appInstance, classLoader, additionalProviders); + deploySingleton(appPrefix, o, appInstance, classLoader, additionalProviders, appInfo.services); } } Set<Class<?>> classes = appInstance.getClasses(); for (Class<?> clazz : classes) { if (hasEjbAndIsNotAManagedBean(restEjbs, clazz)) { - deployEJB(appPrefix, restEjbs.get(clazz.getName()).context, additionalProviders); + deployEJB(appPrefix, restEjbs.get(clazz.getName()).context, additionalProviders, appInfo.services); } else { - deployPojo(appPrefix, clazz, appInstance, classLoader, injections, context, owbCtx, additionalProviders); + deployPojo(appPrefix, clazz, appInstance, classLoader, injections, context, owbCtx, additionalProviders, appInfo.services); } } @@ -184,14 +186,14 @@ public abstract class RESTService implem if (restEjbs.containsKey(clazz)) { final BeanContext ctx = restEjbs.get(clazz).context; if (BeanType.MANAGED.equals(ctx.getComponentType())) { - deployPojo(appPrefix, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), context, owbCtx, additionalProviders); + deployPojo(appPrefix, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), context, owbCtx, additionalProviders, appInfo.services); } else { - deployEJB(appPrefix, restEjbs.get(clazz).context, additionalProviders); + deployEJB(appPrefix, restEjbs.get(clazz).context, additionalProviders, appInfo.services); } } else { try { Class<?> loadedClazz = classLoader.loadClass(clazz); - deployPojo(appPrefix, loadedClazz, null, classLoader, injections, context, owbCtx, additionalProviders); + deployPojo(appPrefix, loadedClazz, null, classLoader, injections, context, owbCtx, additionalProviders, appInfo.services); } catch (ClassNotFoundException e) { throw new OpenEJBRestRuntimeException("can't find class " + clazz, e); } @@ -240,9 +242,9 @@ public abstract class RESTService implem deployPojo(ejb.getValue().path, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), ctx.getJndiContext(), containerSystem.getAppContext(appInfo.appId).getWebBeansContext(), - providers); + providers, appInfo.services); } else { - deployEJB(ejb.getValue().path, ctx, providers); + deployEJB(ejb.getValue().path, ctx, providers, appInfo.services); } } restEjbs.clear(); @@ -295,18 +297,20 @@ public abstract class RESTService implem return restEjbs; } - private void deploySingleton(String contextRoot, Object o, Application appInstance, ClassLoader classLoader, Collection<Class<?>> additionalProviders) { + private void deploySingleton(String contextRoot, Object o, Application appInstance, ClassLoader classLoader, + Collection<Class<?>> additionalProviders, Collection<ServiceInfo> serviceInfos) { final String nopath = getAddress(contextRoot, o.getClass()); final RsHttpListener listener = createHttpListener(); final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(contextRoot, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost); services.add(new DeployedService(address.complete, contextRoot, o.getClass().getName())); - listener.deploySingleton(getFullContext(address.base, contextRoot), o, appInstance, additionalProviders); + listener.deploySingleton(getFullContext(address.base, contextRoot), o, appInstance, additionalProviders, serviceInfos); LOGGER.info("deployed REST singleton: " + o); } - private void deployPojo(String contextRoot, Class<?> loadedClazz, Application app, ClassLoader classLoader, Collection<Injection> injections, Context context, WebBeansContext owbCtx, Collection<Class<?>> additionalProviders) { + private void deployPojo(String contextRoot, Class<?> loadedClazz, Application app, ClassLoader classLoader, Collection<Injection> injections, + Context context, WebBeansContext owbCtx, Collection<Class<?>> additionalProviders, Collection<ServiceInfo> serviceInfos) { if (loadedClazz.isInterface()) { return; } @@ -316,18 +320,18 @@ public abstract class RESTService implem final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(contextRoot, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost); services.add(new DeployedService(address.complete, contextRoot, loadedClazz.getName())); - listener.deployPojo(getFullContext(address.base, contextRoot), loadedClazz, app, injections, context, owbCtx, additionalProviders); + listener.deployPojo(getFullContext(address.base, contextRoot), loadedClazz, app, injections, context, owbCtx, additionalProviders, serviceInfos); LOGGER.info("REST Service: " + address.complete + " -> Pojo " + loadedClazz.getName()); } - private void deployEJB(String context, BeanContext beanContext, Collection<Class<?>> additionalProviders) { + private void deployEJB(String context, BeanContext beanContext, Collection<Class<?>> additionalProviders, Collection<ServiceInfo> serviceInfos) { final String nopath = getAddress(context, beanContext.getBeanClass()); final RsHttpListener listener = createHttpListener(); final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(context, listener, beanContext.getClassLoader(), nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost); services.add(new DeployedService(address.complete, context, beanContext.getBeanClass().getName())); - listener.deployEJB(getFullContext(address.base, context), beanContext, additionalProviders); + listener.deployEJB(getFullContext(address.base, context), beanContext, additionalProviders, serviceInfos); LOGGER.info("REST Service: " + address.complete + " -> EJB " + beanContext.getEjbName()); } Modified: openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java (original) +++ openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsHttpListener.java Thu Aug 16 13:02:53 2012 @@ -22,15 +22,18 @@ import javax.naming.Context; import javax.ws.rs.core.Application; import org.apache.openejb.BeanContext; import org.apache.openejb.Injection; +import org.apache.openejb.assembler.classic.ServiceInfo; import org.apache.openejb.server.httpd.HttpListener; import org.apache.webbeans.config.WebBeansContext; public interface RsHttpListener extends HttpListener { - void deploySingleton(String fullContext, Object o, Application appInstance, Collection<Class<?>> additionalProviders); + void deploySingleton(String fullContext, Object o, Application appInstance, + Collection<Class<?>> additionalProviders, Collection<ServiceInfo> serviceInfos); - void deployPojo(String fullContext, Class<?> loadedClazz, Application app, Collection<Injection> injections, Context context, WebBeansContext owbCtx, Collection<Class<?>> additionalProviders); + void deployPojo(String fullContext, Class<?> loadedClazz, Application app, Collection<Injection> injections, + Context context, WebBeansContext owbCtx, Collection<Class<?>> additionalProviders, Collection<ServiceInfo> serviceInfos); - void deployEJB(String fullContext, BeanContext beanContext, Collection<Class<?>> additionalProviders); + void deployEJB(String fullContext, BeanContext beanContext, Collection<Class<?>> additionalProviders, Collection<ServiceInfo> serviceInfos); void undeploy(); } Modified: openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original) +++ openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Thu Aug 16 13:02:53 2012 @@ -17,24 +17,6 @@ */ package org.apache.openejb.server.webservices; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.MalformedURLException; -import java.net.Socket; -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.util.TreeMap; -import javax.naming.Context; -import javax.xml.namespace.QName; import org.apache.openejb.BeanContext; import org.apache.openejb.Injection; import org.apache.openejb.assembler.classic.AppInfo; @@ -42,6 +24,7 @@ import org.apache.openejb.assembler.clas import org.apache.openejb.assembler.classic.EjbJarInfo; import org.apache.openejb.assembler.classic.EnterpriseBeanInfo; import org.apache.openejb.assembler.classic.PortInfo; +import org.apache.openejb.assembler.classic.ServiceInfo; import org.apache.openejb.assembler.classic.ServletInfo; import org.apache.openejb.assembler.classic.SingletonBeanInfo; import org.apache.openejb.assembler.classic.StatelessBeanInfo; @@ -67,6 +50,25 @@ import org.apache.openejb.util.LogCatego import org.apache.openejb.util.Logger; import org.apache.openejb.util.StringTemplate; +import javax.naming.Context; +import javax.xml.namespace.QName; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.MalformedURLException; +import java.net.Socket; +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.util.TreeMap; + public abstract class WsService implements ServerService, SelfManaging { public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_WS, WsService.class); public static final String WS_ADDRESS_FORMAT = "openejb.wsAddress.format"; @@ -191,11 +193,11 @@ public abstract class WsService implemen } } - protected abstract HttpListener createEjbWsContainer(URL moduleBaseUrl, PortData port, BeanContext beanContext) throws Exception; + protected abstract HttpListener createEjbWsContainer(URL moduleBaseUrl, PortData port, BeanContext beanContext, Collection<ServiceInfo> services) throws Exception; protected abstract void destroyEjbWsContainer(String deploymentId); - protected abstract HttpListener createPojoWsContainer(URL moduleBaseUrl, PortData port, String serviceId, Class target, Context context, String contextRoot, Map<String, Object> bindings) throws Exception; + protected abstract HttpListener createPojoWsContainer(URL moduleBaseUrl, PortData port, String serviceId, Class target, Context context, String contextRoot, Map<String, Object> bindings, Collection<ServiceInfo> services) throws Exception; protected abstract void destroyPojoWsContainer(String serviceId); @@ -246,7 +248,7 @@ public abstract class WsService implemen try { PortData port = WsBuilder.toPortData(portInfo, beanContext.getInjections(), moduleBaseUrl, beanContext.getClassLoader()); - HttpListener container = createEjbWsContainer(moduleBaseUrl, port, beanContext); + HttpListener container = createEjbWsContainer(moduleBaseUrl, port, beanContext, appInfo.services); // generate a location if one was not assigned String location = port.getLocation(); @@ -292,7 +294,7 @@ public abstract class WsService implemen } } for (WebAppInfo webApp : appInfo.webApps) { - afterApplicationCreated(webApp); + afterApplicationCreated(appInfo, webApp); } } } @@ -305,7 +307,7 @@ public abstract class WsService implemen } - public void afterApplicationCreated(WebAppInfo webApp) { + public void afterApplicationCreated(AppInfo appInfo, WebAppInfo webApp) { WebContext webContext = containerSystem.getWebContext(webApp.moduleId); if (webContext == null) return; @@ -343,7 +345,7 @@ public abstract class WsService implemen PortData port = WsBuilder.toPortData(portInfo, injections, moduleBaseUrl, classLoader); - HttpListener container = createPojoWsContainer(moduleBaseUrl, port, portInfo.serviceLink, target, context, webApp.contextRoot, bindings); + HttpListener container = createPojoWsContainer(moduleBaseUrl, port, portInfo.serviceLink, target, context, webApp.contextRoot, bindings, appInfo.services); if (wsRegistry != null) { // give servlet a reference to the webservice container Modified: openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java?rev=1373814&r1=1373813&r2=1373814&view=diff ============================================================================== --- openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java (original) +++ openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java Thu Aug 16 13:02:53 2012 @@ -43,12 +43,14 @@ public class TomeeJaxWsService implement system.addObserver(this); } + // mainly here because is the service manager is disabled cxf service will not be called + // but this one will be public void afterApplicationCreated(@Observes final AfterApplicationCreated event) { // required for Pojo Web Services because when Assembler creates the application // the CoreContainerSystem does not contain the WebContext // see also the start method getContainerSystem().addWebDeployment(webContext); WsService component = SystemInstance.get().getComponent(WsService.class); if (component == null) return; - component.afterApplicationCreated(event.getWeb()); + component.afterApplicationCreated(event.getApp(), event.getWeb()); } }
