diff --git a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java
index 6640cde..c67a26e 100644
--- a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java
+++ b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java
@@ -21,6 +21,7 @@
 
 import org.apache.aries.cdi.container.internal.container.Op.Mode;
 import org.apache.aries.cdi.container.internal.container.Op.Type;
+import org.apache.aries.cdi.container.internal.loader.BundleResourcesLoader;
 import org.apache.aries.cdi.container.internal.model.ExtendedExtensionDTO;
 import org.apache.aries.cdi.container.internal.model.FactoryComponent;
 import org.apache.aries.cdi.container.internal.model.SingleComponent;
@@ -105,6 +106,7 @@
 
 			Thread currentThread = Thread.currentThread();
 			ClassLoader current = currentThread.getContextClassLoader();
+			BundleResourcesLoader.Builder builder = new BundleResourcesLoader.Builder(containerState.bundle(), containerState.extenderBundle());
 
 			try {
 				currentThread.setContextClassLoader(containerState.classLoader());
@@ -116,13 +118,16 @@
 				containerState.containerDTO().extensions.stream().map(
 					ExtendedExtensionDTO.class::cast
 				).map(
-					e -> new ExtensionMetadata(e.extension.getService(), e.template.serviceFilter)
+					e -> {
+						builder.add(e.serviceReference.getBundle());
+						return new ExtensionMetadata(e.extension.getService(), e.template.serviceFilter);
+					}
 				).forEach(extensions::add);
 
 				_bootstrap = new WeldBootstrap();
 
 				BeanDeploymentArchive beanDeploymentArchive = new ContainerDeploymentArchive(
-					containerState.loader(),
+					builder.build(),
 					containerState.id(),
 					containerState.beansModel().getBeanClassNames(),
 					containerState.beansModel().getBeansXml());
diff --git a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java
index f5dbd3f..a6c072f 100644
--- a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java
+++ b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java
@@ -14,9 +14,11 @@
 
 package org.apache.aries.cdi.container.internal.container;
 
-import static org.apache.aries.cdi.container.internal.util.Filters.*;
-import static org.osgi.namespace.extender.ExtenderNamespace.*;
-import static org.osgi.service.cdi.CDIConstants.*;
+import static org.apache.aries.cdi.container.internal.util.Filters.asFilter;
+import static org.osgi.namespace.extender.ExtenderNamespace.EXTENDER_NAMESPACE;
+import static org.osgi.service.cdi.CDIConstants.CDI_CAPABILITY_NAME;
+import static org.osgi.service.cdi.CDIConstants.CDI_CONTAINER_ID;
+import static org.osgi.service.cdi.CDIConstants.CDI_EXTENSION_PROPERTY;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
@@ -330,7 +332,7 @@
 
 	@SuppressWarnings("unchecked")
 	public <T extends ResourceLoader & ProxyServices> T loader() {
-		return (T)new BundleResourcesLoader(_bundle, _extenderBundle);
+		return (T)new BundleResourcesLoader.Builder(_bundle, _extenderBundle).build();
 	}
 
 	public PromiseFactory promiseFactory() {
diff --git a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java
index ddfa69b..621ac34 100644
--- a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java
+++ b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java
@@ -33,7 +33,28 @@
 
 public class BundleResourcesLoader implements ProxyServices, ResourceLoader {
 
-	public BundleResourcesLoader(Bundle bundle, Bundle extenderBundle) {
+	public static class Builder {
+
+		public Builder(Bundle bundle, Bundle extenderBundle) {
+			this.bundle = bundle;
+			this.extenderBundle = extenderBundle;
+		}
+
+		public Builder add(Bundle bundle) {
+			additionalBundles.add(bundle);
+			return this;
+		}
+
+		public BundleResourcesLoader build() {
+			return new BundleResourcesLoader(bundle, extenderBundle, additionalBundles);
+		}
+
+		private final Bundle bundle;
+		private final Bundle extenderBundle;
+		private final List<Bundle> additionalBundles = new ArrayList<>();
+	}
+
+	BundleResourcesLoader(Bundle bundle, Bundle extenderBundle, List<Bundle> additionalBundles) {
 		BundleWiring extenderWiring = extenderBundle.adapt(BundleWiring.class);
 
 		List<Bundle> bundles = new ArrayList<>();
@@ -57,6 +78,8 @@
 			}
 		}
 
+		bundles.addAll(additionalBundles);
+
 		_classLoader = new BundleClassLoader(bundles.toArray(new Bundle[0]));
 	}
 
