+ ObjectName onObj = translateServiceRefIfPossible(on, clazz, configMBeanServer);
+ return JMX.newMBeanProxy(configMBeanServer, onObj, clazz);
+ }
+
+ static ObjectName translateServiceRefIfPossible(ObjectName on, Class<?> clazz, MBeanServer configMBeanServer) {
+ ObjectName onObj = on;
+ if (ObjectNameUtil.isServiceReference(onObj) && clazz.equals(ServiceReferenceMXBean.class) == false) {
+ ServiceReferenceMXBean proxy = JMX.newMXBeanProxy(configMBeanServer, onObj, ServiceReferenceMXBean.class);
+ onObj = proxy.getCurrentImplementation();
+ }
+ return onObj;