diff --git a/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/WeldDeployment.java b/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/WeldDeployment.java index 63d76891c0..87938ae233 100644 --- a/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/WeldDeployment.java +++ b/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/WeldDeployment.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -36,6 +37,7 @@ import org.jboss.as.weld.WeldModuleResourceLoader; import org.jboss.as.weld.deployment.BeanDeploymentArchiveImpl.BeanArchiveType; import org.jboss.as.weld.logging.WeldLogger; import org.jboss.as.weld.services.bootstrap.ProxyServicesImpl; +import org.jboss.as.weld.util.Reflections; import org.jboss.modules.Module; import org.jboss.modules.ModuleIdentifier; import org.jboss.weld.bootstrap.api.Service; @@ -185,7 +187,15 @@ public class WeldDeployment implements CDI11Deployment { BeansXml.EMPTY_BEANS_XML, module, id, BeanArchiveType.SYNTHETIC, false); WeldLogger.DEPLOYMENT_LOGGER.beanArchiveDiscovered(newBda); newBda.addBeanClass(beanClass); - newBda.getServices().addAll(serviceRegistry.entrySet()); + + // copy parent serviceregistry entries - but don't overwrite our own + ServiceRegistry childRegistry = newBda.getServices(); + for( Entry, Service> entry : serviceRegistry.entrySet()) + { + if(! childRegistry.contains(entry.getKey())) + childRegistry.add( entry.getKey(), Reflections.cast(entry.getValue())); + } + if (module != null && eeModuleDescriptors.containsKey(module.getIdentifier())) { newBda.getServices().add(EEModuleDescriptor.class, eeModuleDescriptors.get(module.getIdentifier())); }