register dispatch servlet using the bundle context of the bundle providing the resource type
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptTracker.java b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptTracker.java
index 497b1bb..7d711d7 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptTracker.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptTracker.java
@@ -29,7 +29,6 @@
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
-import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -82,6 +81,7 @@
     private static final Logger LOGGER = LoggerFactory.getLogger(BundledScriptTracker.class);
     private static final String AT_SLING_SELECTORS = "sling.resourceType.selectors";
     private static final String AT_SLING_EXTENSIONS = "sling.resourceType.extensions";
+    private static final String REGISTERING_BUNDLE = "org.apache.sling.scripting.resolver.internal.BundledScriptTracker.registering_bundle";
 
     static final String AT_VERSION = "version";
     private static final String AT_EXTENDS = "extends";
@@ -255,7 +255,17 @@
             }
             ServiceRegistration<Servlet> reg = m_dispatchers.remove(rt);
             if (reg == null) {
-                reg = m_context.registerService(Servlet.class, new DispatcherServlet(rt), properties);
+                Optional<BundleContext> registeringBundle = propList.stream().map(props -> {
+                    Bundle bundle = (Bundle) props.get(REGISTERING_BUNDLE);
+                    if (bundle != null) {
+                        return bundle.getBundleContext();
+                    }
+                    return null;
+                }).findFirst();
+                properties.put(Constants.SERVICE_DESCRIPTION, ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES + "=" + rt + "; " +
+                        ServletResolverConstants.SLING_SERVLET_EXTENSIONS + "=" + extensions + "; " +
+                        ServletResolverConstants.SLING_SERVLET_METHODS + "=" + methods);
+                reg = registeringBundle.orElse(m_context).registerService(Servlet.class, new DispatcherServlet(rt), properties);
             } else {
                 if (!new HashSet<>(Arrays.asList(PropertiesUtil
                         .toStringArray(reg.getReference().getProperty(ServletResolverConstants.SLING_SERVLET_METHODS), new String[0])))
@@ -277,6 +287,7 @@
         set(ServletResolverConstants.SLING_SERVLET_EXTENSIONS, ref, result);
         set(ServletResolverConstants.SLING_SERVLET_SELECTORS, ref, result);
         set(ServletResolverConstants.SLING_SERVLET_METHODS, ref, result);
+        result.put(REGISTERING_BUNDLE, reg.getReference().getBundle());
 
         return result;
     }