Julian Sedding created SLING-13251:
--------------------------------------

             Summary: MBean registration in ServletFilterManager fails for 
factory components
                 Key: SLING-13251
                 URL: https://issues.apache.org/jira/browse/SLING-13251
             Project: Sling
          Issue Type: Bug
          Components: Engine
    Affects Versions: Engine 2.16.8
            Reporter: Julian Sedding
            Assignee: Julian Sedding


When multiple servlet {{Filter}} components are registered via factory 
configurations, JMX MBean registration fails with an 
{{InstanceAlreadyExistsException}} (see below).

This happens, because the MBean name is derived from the {{component.name}} 
property before the {{service.pid}} property. The {{component.name}} is the 
same for multiple configurations of the same component, while the 
{{service.pid}} reflects the factory configuration's {{name}} in addition to 
the {{component.name}}.

E.g. 
{{service.pid}}: 
com.adobe.cq.wcm.core.components.internal.servlets.TableOfContentsFilter~commons
{{component.name}}: 
com.adobe.cq.wcm.core.components.internal.servlets.TableOfContentsFilter

Preferring the {{service.pid}}, if present, should resolve this issue.

{noformat}
2026-06-16 11:56:22.096 ERROR   [SlingServletContext-registration] 
org.apache.aries.jmx.whiteboard.MBeanHolder register: Failure registering MBean 
org.apache.sling.engine.impl.filter.FilterProcessorMBeanImpl@4333330f
javax.management.InstanceAlreadyExistsException: 
org.apache.sling:type=engine-filter,service=com.adobe.cq.wcm.core.components.internal.servlets.TableOfContentsFilter
        at 
java.management/com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:322)
        at 
java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1848)
        at 
java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:945)
        at 
java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:880)
        at 
java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:315)
        at 
java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:523)
        at 
org.apache.aries.jmx.whiteboard.MBeanHolder.register(MBeanHolder.java:114) 
[org.apache.aries.jmx.whiteboard:1.2.0]
        at 
org.apache.aries.jmx.whiteboard.JmxWhiteboardSupport.registerMBean(JmxWhiteboardSupport.java:88)
 [org.apache.aries.jmx.whiteboard:1.2.0]
        at 
org.apache.aries.jmx.whiteboard.Activator$MBeanTracker.addingService(Activator.java:102)
 [org.apache.aries.jmx.whiteboard:1.2.0]
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:944)
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:872)
        at 
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
        at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:904)
        at 
org.apache.felix.framework.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:990)
        at 
org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:838)
        at 
org.apache.felix.framework.EventDispatcher.fireServiceEvent(EventDispatcher.java:545)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4863)
        at org.apache.felix.framework.Felix.registerService(Felix.java:3834)
        at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:328)
        at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:335)
        at 
org.apache.sling.engine.impl.filter.ServletFilterManager.initFilter(ServletFilterManager.java:170)
 [org.apache.sling.engine:2.16.6]
        at 
org.apache.sling.engine.impl.filter.ServletFilterManager.bindFilter(ServletFilterManager.java:135)
 [org.apache.sling.engine:2.16.6]
        [...]
{noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to