activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clebertsuco...@apache.org
Subject [activemq-artemis] branch master updated: ARTEMIS-2749 - Broadcast Group Control Improvements
Date Mon, 04 May 2020 16:53:09 GMT
This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/master by this push:
     new 2ab3815  ARTEMIS-2749 - Broadcast Group Control Improvements
     new fde126d  This closes #3114
2ab3815 is described below

commit 2ab381565c004c2447b9ce574fda1117ae290591
Author: Andy Taylor <andy.tayls67@gmail.com>
AuthorDate: Thu Apr 30 10:44:42 2020 +0100

    ARTEMIS-2749 - Broadcast Group Control Improvements
    
    https://issues.apache.org/jira/browse/ARTEMIS-2749
---
 .../apache/activemq/artemis/logs/AuditLogger.java  |  24 ++++
 ...Control.java => BaseBroadcastGroupControl.java} |  20 +--
 .../api/core/management/BroadcastGroupControl.java |  27 +---
 .../JGroupsChannelBroadcastGroupControl.java       |  29 +++++
 .../JGroupsFileBroadcastGroupControl.java          |  41 ++++++
 ...mpl.java => BaseBroadcastGroupControlImpl.java} |  80 +++---------
 .../management/impl/BroadcastGroupControlImpl.java | 145 ++-------------------
 .../JGroupsChannelBroadcastGroupControlImpl.java   |  66 ++++++++++
 .../impl/JGroupsFileBroadcastGroupControlImpl.java |  89 +++++++++++++
 .../management/impl/ManagementServiceImpl.java     |  18 ++-
 .../JGroupsChannelBroadcastGroupControlTest.java   | 111 ++++++++++++++++
 .../JGroupsFileBroadcastGroupControlTest.java      |  84 ++++++++++++
 .../management/ManagementControlHelper.java        |  12 ++
 13 files changed, 505 insertions(+), 241 deletions(-)

diff --git a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
index 74cafb9..94d2a5d 100644
--- a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
+++ b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java
@@ -2390,6 +2390,30 @@ public interface AuditLogger extends BasicLogger {
    void clearDuplicateIdCache(String user, Object source, Object... args);
 
 
+   static void getChannelName(Object source) {
+      LOGGER.getChannelName(getCaller(), source);
+   }
+
+   @LogMessage(level = Logger.Level.INFO)
+   @Message(id = 601511, value = "User {0} is getting channelName property on target resource: {1} {2}", format = Message.Format.MESSAGE_FORMAT)
+   void getChannelName(String user, Object source, Object... args);
+
+   static void getFileContents(Object source) {
+      LOGGER.getFileContents(getCaller(), source);
+   }
+
+   @LogMessage(level = Logger.Level.INFO)
+   @Message(id = 601512, value = "User {0} is getting fileContents property on target resource: {1} {2}", format = Message.Format.MESSAGE_FORMAT)
+   void getFileContents(String user, Object source, Object... args);
+
+   static void getFile(Object source) {
+      LOGGER.getFile(getCaller(), source);
+   }
+
+   @LogMessage(level = Logger.Level.INFO)
+   @Message(id = 601513, value = "User {0} is getting file property on target resource: {1} {2}", format = Message.Format.MESSAGE_FORMAT)
+   void getFile(String user, Object source, Object... args);
+
    /*
     * This logger is for message production and consumption and is on the hot path so enabled independently
     *
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BaseBroadcastGroupControl.java
similarity index 73%
copy from artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
copy to artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BaseBroadcastGroupControl.java
index 69b9a5e..c87d075 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BaseBroadcastGroupControl.java
@@ -19,7 +19,7 @@ package org.apache.activemq.artemis.api.core.management;
 /**
  * A BroadcastGroupControl is used to manage a broadcast group.
  */
-public interface BroadcastGroupControl extends ActiveMQComponentControl {
+public interface BaseBroadcastGroupControl extends ActiveMQComponentControl {
 
    /**
     * Returns the configuration name of this broadcast group.
@@ -28,24 +28,6 @@ public interface BroadcastGroupControl extends ActiveMQComponentControl {
    String getName();
 
    /**
-    * Returns the local port this broadcast group is bound to.
-    */
-   @Attribute(desc = "local port this broadcast group is bound to")
-   int getLocalBindPort() throws Exception;
-
-   /**
-    * Returns the address this broadcast group is broadcasting to.
-    */
-   @Attribute(desc = "address this broadcast group is broadcasting to")
-   String getGroupAddress() throws Exception;
-
-   /**
-    * Returns the port this broadcast group is broadcasting to.
-    */
-   @Attribute(desc = "port this broadcast group is broadcasting to")
-   int getGroupPort() throws Exception;
-
-   /**
     * Returns the period used by this broadcast group.
     */
    @Attribute(desc = "period used by this broadcast group")
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
index 69b9a5e..efc8e49 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
@@ -19,13 +19,7 @@ package org.apache.activemq.artemis.api.core.management;
 /**
  * A BroadcastGroupControl is used to manage a broadcast group.
  */
-public interface BroadcastGroupControl extends ActiveMQComponentControl {
-
-   /**
-    * Returns the configuration name of this broadcast group.
-    */
-   @Attribute(desc = "name of this broadcast group")
-   String getName();
+public interface BroadcastGroupControl extends BaseBroadcastGroupControl {
 
    /**
     * Returns the local port this broadcast group is bound to.
@@ -44,23 +38,4 @@ public interface BroadcastGroupControl extends ActiveMQComponentControl {
     */
    @Attribute(desc = "port this broadcast group is broadcasting to")
    int getGroupPort() throws Exception;
-
-   /**
-    * Returns the period used by this broadcast group.
-    */
-   @Attribute(desc = "period used by this broadcast group")
-   long getBroadcastPeriod();
-
-   /**
-    * Returns the pairs of live-backup connectors that are broadcasted by this broadcast group.
-    */
-   @Attribute(desc = "pairs of live-backup connectors that are broadcasted by this broadcast group")
-   Object[] getConnectorPairs();
-
-   /**
-    * Returns the pairs of live-backup connectors that are broadcasted by this broadcast group
-    * using JSON serialization.
-    */
-   @Attribute(desc = "pairs of live-backup connectors that are broadcasted by this broadcast group using JSON serialization")
-   String getConnectorPairsAsJSON() throws Exception;
 }
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/JGroupsChannelBroadcastGroupControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/JGroupsChannelBroadcastGroupControl.java
new file mode 100644
index 0000000..b3a8b0f
--- /dev/null
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/JGroupsChannelBroadcastGroupControl.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.api.core.management;
+
+/**
+ * A BroadcastGroupControl is used to manage a broadcast group.
+ */
+public interface JGroupsChannelBroadcastGroupControl extends BaseBroadcastGroupControl {
+
+   /**
+    * Returns the JGroups channel name
+    */
+   @Attribute(desc = "Returns the JGroups channel name")
+   String getChannelName() throws Exception;
+}
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/JGroupsFileBroadcastGroupControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/JGroupsFileBroadcastGroupControl.java
new file mode 100644
index 0000000..7f39a82
--- /dev/null
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/JGroupsFileBroadcastGroupControl.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.api.core.management;
+
+/**
+ * A BroadcastGroupControl is used to manage a broadcast group.
+ */
+public interface JGroupsFileBroadcastGroupControl extends BaseBroadcastGroupControl {
+
+   /**
+    * Returns jgroups channel name
+    */
+   @Attribute(desc = "Returns jgroups channel name")
+   String getChannelName();
+
+   /**
+    * Returns the jgroups file name
+    */
+   @Attribute(desc = "Returns the jgroups file name")
+   String getFile();
+
+   /**
+    * Returns the contents of the jgroups file
+    */
+   @Attribute(desc = "Returns the contents of the jgroups file")
+   String getFileContents() throws Exception;
+}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BaseBroadcastGroupControlImpl.java
similarity index 65%
copy from artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
copy to artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BaseBroadcastGroupControlImpl.java
index dd4ee8b..bdda6ac 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BaseBroadcastGroupControlImpl.java
@@ -16,23 +16,24 @@
  */
 package org.apache.activemq.artemis.core.management.impl;
 
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanOperationInfo;
-
 import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
 import org.apache.activemq.artemis.api.core.JsonUtil;
-import org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory;
-import org.apache.activemq.artemis.api.core.management.BroadcastGroupControl;
+import org.apache.activemq.artemis.api.core.management.BaseBroadcastGroupControl;
 import org.apache.activemq.artemis.core.persistence.StorageManager;
 import org.apache.activemq.artemis.core.server.cluster.BroadcastGroup;
 import org.apache.activemq.artemis.logs.AuditLogger;
 
-public class BroadcastGroupControlImpl extends AbstractControl implements BroadcastGroupControl {
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanOperationInfo;
+
+public class BaseBroadcastGroupControlImpl extends AbstractControl implements BaseBroadcastGroupControl {
 
    // Constants -----------------------------------------------------
 
    // Attributes ----------------------------------------------------
 
+   private Class broadcastGroupControlClass;
+
    private final BroadcastGroup broadcastGroup;
 
    private final BroadcastGroupConfiguration configuration;
@@ -41,10 +42,12 @@ public class BroadcastGroupControlImpl extends AbstractControl implements Broadc
 
    // Constructors --------------------------------------------------
 
-   public BroadcastGroupControlImpl(final BroadcastGroup broadcastGroup,
-                                    final StorageManager storageManager,
-                                    final BroadcastGroupConfiguration configuration) throws Exception {
-      super(BroadcastGroupControl.class, storageManager);
+   public BaseBroadcastGroupControlImpl(final Class broadcastGroupControlClass,
+                                        final BroadcastGroup broadcastGroup,
+                                        final StorageManager storageManager,
+                                        final BroadcastGroupConfiguration configuration) throws Exception {
+      super(broadcastGroupControlClass, storageManager);
+      this.broadcastGroupControlClass = broadcastGroupControlClass;
       this.broadcastGroup = broadcastGroup;
       this.configuration = configuration;
    }
@@ -109,55 +112,6 @@ public class BroadcastGroupControlImpl extends AbstractControl implements Broadc
       }
    }
 
-   //todo ghoward we should deal with this properly
-   @Override
-   public String getGroupAddress() throws Exception {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.getGroupAddress(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) {
-            return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getGroupAddress();
-         }
-         throw new Exception("Invalid request because this is not a UDP Broadcast configuration.");
-      } finally {
-         blockOnIO();
-      }
-   }
-
-   @Override
-   public int getGroupPort() throws Exception {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.getGroupPort(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) {
-            return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getGroupPort();
-         }
-         throw new Exception("Invalid request because this is not a UDP Broadcast configuration.");
-      } finally {
-         blockOnIO();
-      }
-   }
-
-   @Override
-   public int getLocalBindPort() throws Exception {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.getLocalBindPort(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) {
-            return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getLocalBindPort();
-         }
-         throw new Exception("Invalid request because this is not a UDP Broadcast configuration.");
-      } finally {
-         blockOnIO();
-      }
-   }
-
    // MessagingComponentControlMBean implementation -----------------
 
    @Override
@@ -201,12 +155,16 @@ public class BroadcastGroupControlImpl extends AbstractControl implements Broadc
 
    @Override
    protected MBeanOperationInfo[] fillMBeanOperationInfo() {
-      return MBeanInfoHelper.getMBeanOperationsInfo(BroadcastGroupControl.class);
+      return MBeanInfoHelper.getMBeanOperationsInfo(broadcastGroupControlClass);
    }
 
    @Override
    protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
-      return MBeanInfoHelper.getMBeanAttributesInfo(BroadcastGroupControl.class);
+      return MBeanInfoHelper.getMBeanAttributesInfo(broadcastGroupControlClass);
+   }
+
+   protected BroadcastGroup getBroadcastGroup() {
+      return broadcastGroup;
    }
 
    // Public --------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
index dd4ee8b..6d4dcc7 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
@@ -16,26 +16,20 @@
  */
 package org.apache.activemq.artemis.core.management.impl;
 
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanOperationInfo;
-
 import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
-import org.apache.activemq.artemis.api.core.JsonUtil;
 import org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.management.BroadcastGroupControl;
 import org.apache.activemq.artemis.core.persistence.StorageManager;
 import org.apache.activemq.artemis.core.server.cluster.BroadcastGroup;
 import org.apache.activemq.artemis.logs.AuditLogger;
 
-public class BroadcastGroupControlImpl extends AbstractControl implements BroadcastGroupControl {
+public class BroadcastGroupControlImpl extends BaseBroadcastGroupControlImpl implements BroadcastGroupControl {
 
    // Constants -----------------------------------------------------
 
    // Attributes ----------------------------------------------------
 
-   private final BroadcastGroup broadcastGroup;
-
-   private final BroadcastGroupConfiguration configuration;
+   private UDPBroadcastEndpointFactory endpointFactory;
 
    // Static --------------------------------------------------------
 
@@ -43,84 +37,23 @@ public class BroadcastGroupControlImpl extends AbstractControl implements Broadc
 
    public BroadcastGroupControlImpl(final BroadcastGroup broadcastGroup,
                                     final StorageManager storageManager,
-                                    final BroadcastGroupConfiguration configuration) throws Exception {
-      super(BroadcastGroupControl.class, storageManager);
-      this.broadcastGroup = broadcastGroup;
-      this.configuration = configuration;
+                                    final BroadcastGroupConfiguration configuration,
+                                    final UDPBroadcastEndpointFactory endpointFactory) throws Exception {
+      super(BroadcastGroupControl.class, broadcastGroup, storageManager, configuration);
+      this.endpointFactory = endpointFactory;
    }
 
    // BroadcastGroupControlMBean implementation ---------------------
 
-   @Override
-   public String getName() {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.getName(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         return configuration.getName();
-      } finally {
-         blockOnIO();
-      }
-   }
-
-   @Override
-   public long getBroadcastPeriod() {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.getBroadcastPeriod(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         return configuration.getBroadcastPeriod();
-      } finally {
-         blockOnIO();
-      }
-   }
-
-   @Override
-   public Object[] getConnectorPairs() {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.getConnectorPairs(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         Object[] ret = new Object[configuration.getConnectorInfos().size()];
-
-         int i = 0;
-         for (String connector : configuration.getConnectorInfos()) {
-            ret[i++] = connector;
-         }
-         return ret;
-      } finally {
-         blockOnIO();
-      }
-   }
-
-   @Override
-   public String getConnectorPairsAsJSON() throws Exception {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.getConnectorPairsAsJSON(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         return JsonUtil.toJsonArray(configuration.getConnectorInfos()).toString();
-      } finally {
-         blockOnIO();
-      }
-   }
-
    //todo ghoward we should deal with this properly
    @Override
    public String getGroupAddress() throws Exception {
       if (AuditLogger.isEnabled()) {
-         AuditLogger.getGroupAddress(this.broadcastGroup);
+         AuditLogger.getGroupAddress(this.getBroadcastGroup());
       }
       clearIO();
       try {
-         if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) {
-            return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getGroupAddress();
-         }
-         throw new Exception("Invalid request because this is not a UDP Broadcast configuration.");
+         return endpointFactory.getGroupAddress();
       } finally {
          blockOnIO();
       }
@@ -129,14 +62,11 @@ public class BroadcastGroupControlImpl extends AbstractControl implements Broadc
    @Override
    public int getGroupPort() throws Exception {
       if (AuditLogger.isEnabled()) {
-         AuditLogger.getGroupPort(this.broadcastGroup);
+         AuditLogger.getGroupPort(this.getBroadcastGroup());
       }
       clearIO();
       try {
-         if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) {
-            return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getGroupPort();
-         }
-         throw new Exception("Invalid request because this is not a UDP Broadcast configuration.");
+         return endpointFactory.getGroupPort();
       } finally {
          blockOnIO();
       }
@@ -145,14 +75,11 @@ public class BroadcastGroupControlImpl extends AbstractControl implements Broadc
    @Override
    public int getLocalBindPort() throws Exception {
       if (AuditLogger.isEnabled()) {
-         AuditLogger.getLocalBindPort(this.broadcastGroup);
+         AuditLogger.getLocalBindPort(this.getBroadcastGroup());
       }
       clearIO();
       try {
-         if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) {
-            return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getLocalBindPort();
-         }
-         throw new Exception("Invalid request because this is not a UDP Broadcast configuration.");
+         return endpointFactory.getLocalBindPort();
       } finally {
          blockOnIO();
       }
@@ -160,54 +87,6 @@ public class BroadcastGroupControlImpl extends AbstractControl implements Broadc
 
    // MessagingComponentControlMBean implementation -----------------
 
-   @Override
-   public boolean isStarted() {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.isStarted(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         return broadcastGroup.isStarted();
-      } finally {
-         blockOnIO();
-      }
-   }
-
-   @Override
-   public void start() throws Exception {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.startBroadcastGroup(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         broadcastGroup.start();
-      } finally {
-         blockOnIO();
-      }
-   }
-
-   @Override
-   public void stop() throws Exception {
-      if (AuditLogger.isEnabled()) {
-         AuditLogger.stopBroadcastGroup(this.broadcastGroup);
-      }
-      clearIO();
-      try {
-         broadcastGroup.stop();
-      } finally {
-         blockOnIO();
-      }
-   }
-
-   @Override
-   protected MBeanOperationInfo[] fillMBeanOperationInfo() {
-      return MBeanInfoHelper.getMBeanOperationsInfo(BroadcastGroupControl.class);
-   }
-
-   @Override
-   protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
-      return MBeanInfoHelper.getMBeanAttributesInfo(BroadcastGroupControl.class);
-   }
 
    // Public --------------------------------------------------------
 
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsChannelBroadcastGroupControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsChannelBroadcastGroupControlImpl.java
new file mode 100644
index 0000000..bda1c22
--- /dev/null
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsChannelBroadcastGroupControlImpl.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.core.management.impl;
+
+import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory;
+import org.apache.activemq.artemis.api.core.management.JGroupsChannelBroadcastGroupControl;
+import org.apache.activemq.artemis.core.persistence.StorageManager;
+import org.apache.activemq.artemis.core.server.cluster.BroadcastGroup;
+import org.apache.activemq.artemis.logs.AuditLogger;
+
+public class JGroupsChannelBroadcastGroupControlImpl extends BaseBroadcastGroupControlImpl implements JGroupsChannelBroadcastGroupControl {
+
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   private ChannelBroadcastEndpointFactory endpointFactory;
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   public JGroupsChannelBroadcastGroupControlImpl(final BroadcastGroup broadcastGroup,
+                                                  final StorageManager storageManager,
+                                                  final BroadcastGroupConfiguration configuration,
+                                                  final ChannelBroadcastEndpointFactory endpointFactory) throws Exception {
+      super(JGroupsChannelBroadcastGroupControl.class, broadcastGroup, storageManager, configuration);
+      this.endpointFactory = endpointFactory;
+   }
+
+   // BroadcastGroupControlMBean implementation ---------------------
+
+   @Override
+   public String getChannelName() throws Exception {
+      if (AuditLogger.isEnabled()) {
+         AuditLogger.getChannelName(this.endpointFactory.getChannelName());
+      }
+      return endpointFactory.getChannelName();
+   }
+
+   // Public --------------------------------------------------------
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+
+}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsFileBroadcastGroupControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsFileBroadcastGroupControlImpl.java
new file mode 100644
index 0000000..9f6d1ef
--- /dev/null
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/JGroupsFileBroadcastGroupControlImpl.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.core.management.impl;
+
+import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpointFactory;
+import org.apache.activemq.artemis.api.core.management.JGroupsFileBroadcastGroupControl;
+import org.apache.activemq.artemis.core.persistence.StorageManager;
+import org.apache.activemq.artemis.core.server.cluster.BroadcastGroup;
+import org.apache.activemq.artemis.logs.AuditLogger;
+
+import java.io.File;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+public class JGroupsFileBroadcastGroupControlImpl extends BaseBroadcastGroupControlImpl implements JGroupsFileBroadcastGroupControl {
+
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   private JGroupsFileBroadcastEndpointFactory endpointFactory;
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   public JGroupsFileBroadcastGroupControlImpl(final BroadcastGroup broadcastGroup,
+                                               final StorageManager storageManager,
+                                               final BroadcastGroupConfiguration configuration,
+                                               final JGroupsFileBroadcastEndpointFactory endpointFactory) throws Exception {
+      super(JGroupsFileBroadcastGroupControl.class, broadcastGroup, storageManager, configuration);
+      this.endpointFactory = endpointFactory;
+   }
+
+   // BroadcastGroupControlMBean implementation ---------------------
+
+   @Override
+   public String getFileContents() throws Exception {
+      if (AuditLogger.isEnabled()) {
+         AuditLogger.getFileContents(this.getBroadcastGroup());
+      }
+      URL resource = this.getClass().getClassLoader().getResource(this.getFile());
+      File file = new File(resource.getFile());
+      return new String(Files.readAllBytes(Paths.get(file.getPath())));
+   }
+
+   @Override
+   public String getChannelName() {
+      if (AuditLogger.isEnabled()) {
+         AuditLogger.getChannelName(this.getBroadcastGroup());
+      }
+      return endpointFactory.getChannelName();
+   }
+
+   @Override
+   public String getFile() {
+      if (AuditLogger.isEnabled()) {
+         AuditLogger.getFile(this.getBroadcastGroup());
+      }
+      return endpointFactory.getFile();
+   }
+
+   // Public --------------------------------------------------------
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+
+}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
index 5b2a034..6b0d261 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
@@ -34,16 +34,20 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ScheduledExecutorService;
 
+import org.apache.activemq.artemis.api.core.BroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.ICoreMessage;
+import org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.JsonUtil;
 import org.apache.activemq.artemis.api.core.Message;
 import org.apache.activemq.artemis.api.core.RoutingType;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
+import org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory;
 import org.apache.activemq.artemis.api.core.management.AcceptorControl;
+import org.apache.activemq.artemis.api.core.management.BaseBroadcastGroupControl;
 import org.apache.activemq.artemis.api.core.management.BridgeControl;
-import org.apache.activemq.artemis.api.core.management.BroadcastGroupControl;
 import org.apache.activemq.artemis.api.core.management.ClusterConnectionControl;
 import org.apache.activemq.artemis.api.core.management.DivertControl;
 import org.apache.activemq.artemis.api.core.management.ManagementHelper;
@@ -60,6 +64,8 @@ import org.apache.activemq.artemis.core.management.impl.BridgeControlImpl;
 import org.apache.activemq.artemis.core.management.impl.BroadcastGroupControlImpl;
 import org.apache.activemq.artemis.core.management.impl.ClusterConnectionControlImpl;
 import org.apache.activemq.artemis.core.management.impl.DivertControlImpl;
+import org.apache.activemq.artemis.core.management.impl.JGroupsChannelBroadcastGroupControlImpl;
+import org.apache.activemq.artemis.core.management.impl.JGroupsFileBroadcastGroupControlImpl;
 import org.apache.activemq.artemis.core.management.impl.QueueControlImpl;
 import org.apache.activemq.artemis.core.message.impl.CoreMessage;
 import org.apache.activemq.artemis.core.messagecounter.MessageCounter;
@@ -339,7 +345,15 @@ public class ManagementServiceImpl implements ManagementService {
                                                    final BroadcastGroupConfiguration configuration) throws Exception {
       broadcastGroup.setNotificationService(this);
       ObjectName objectName = objectNameBuilder.getBroadcastGroupObjectName(configuration.getName());
-      BroadcastGroupControl control = new BroadcastGroupControlImpl(broadcastGroup, storageManager, configuration);
+      BroadcastEndpointFactory endpointFactory = configuration.getEndpointFactory();
+      BaseBroadcastGroupControl control = null;
+      if (endpointFactory instanceof UDPBroadcastEndpointFactory) {
+         control = new BroadcastGroupControlImpl(broadcastGroup, storageManager, configuration, (UDPBroadcastEndpointFactory) endpointFactory);
+      } else if (endpointFactory instanceof JGroupsFileBroadcastEndpointFactory) {
+         control = new JGroupsFileBroadcastGroupControlImpl(broadcastGroup, storageManager, configuration, (JGroupsFileBroadcastEndpointFactory) endpointFactory);
+      } else if (endpointFactory instanceof ChannelBroadcastEndpointFactory) {
+         control = new JGroupsChannelBroadcastGroupControlImpl(broadcastGroup, storageManager, configuration, (ChannelBroadcastEndpointFactory) endpointFactory);
+      }
       registerInJMX(objectName, control);
       registerInRegistry(ResourceNames.BROADCAST_GROUP + configuration.getName(), control);
    }
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/JGroupsChannelBroadcastGroupControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/JGroupsChannelBroadcastGroupControlTest.java
new file mode 100644
index 0000000..bef5b7c
--- /dev/null
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/JGroupsChannelBroadcastGroupControlTest.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.tests.integration.management;
+
+import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory;
+import org.apache.activemq.artemis.api.core.JsonUtil;
+import org.apache.activemq.artemis.api.core.TransportConfiguration;
+import org.apache.activemq.artemis.api.core.jgroups.JChannelManager;
+import org.apache.activemq.artemis.api.core.management.JGroupsChannelBroadcastGroupControl;
+import org.apache.activemq.artemis.core.config.Configuration;
+import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.core.server.ActiveMQServers;
+import org.apache.activemq.artemis.utils.RandomUtil;
+import org.apache.activemq.artemis.utils.ThreadLeakCheckRule;
+import org.jgroups.JChannel;
+import org.jgroups.conf.PlainConfigurator;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import javax.json.JsonArray;
+import java.util.ArrayList;
+import java.util.List;
+
+public class JGroupsChannelBroadcastGroupControlTest extends ManagementTestBase {
+
+   private ActiveMQServer server;
+   BroadcastGroupConfiguration broadcastGroupConfig;
+
+   JGroupsChannelBroadcastGroupControl broadcastGroupControl;
+
+   @After
+   public void cleanupJChannel() {
+      JChannelManager.getInstance().clear();
+   }
+
+   @Before
+   public void prepareJChannel() {
+      JChannelManager.getInstance().setLoopbackMessages(true);
+   }
+
+   @Rule
+   public ThreadLeakCheckRule threadLeakCheckRule = new ThreadLeakCheckRule();
+
+   private final String jgroupsConfigString = "UDP(oob_thread_pool.max_threads=300;" + "bind_addr=127.0.0.1;oob_thread_pool.keep_alive_time=1000;" + "max_bundle_size=31k;mcast_send_buf_size=640000;" + "internal_thread_pool.keep_alive_time=60000;" + "internal_thread_pool.rejection_policy=discard;" + "mcast_recv_buf_size=25000000;bind_port=55200;" + "internal_thread_pool.queue_max_size=100;" + "mcast_port=45688;thread_pool.min_threads=20;" + "oob_thread_pool.rejection_policy=discard;" + "t [...]
+
+
+   @Test
+   public void testAttributes() throws Exception {
+      ChannelBroadcastEndpointFactory udpCfg = (ChannelBroadcastEndpointFactory) broadcastGroupConfig.getEndpointFactory();
+      Assert.assertEquals(broadcastGroupConfig.getName(), broadcastGroupControl.getName());
+      Assert.assertEquals(udpCfg.getChannelName(), broadcastGroupControl.getChannelName());
+      Assert.assertEquals(broadcastGroupConfig.getBroadcastPeriod(), broadcastGroupControl.getBroadcastPeriod());
+
+      Object[] connectorPairs = broadcastGroupControl.getConnectorPairs();
+      Assert.assertEquals(1, connectorPairs.length);
+
+      String connectorPairData = (String) connectorPairs[0];
+      Assert.assertEquals(broadcastGroupConfig.getConnectorInfos().get(0), connectorPairData);
+      String jsonString = broadcastGroupControl.getConnectorPairsAsJSON();
+      Assert.assertNotNull(jsonString);
+      JsonArray array = JsonUtil.readJsonArray(jsonString);
+      Assert.assertEquals(1, array.size());
+      Assert.assertEquals(broadcastGroupConfig.getConnectorInfos().get(0), array.getString(0));
+
+      Assert.assertTrue(broadcastGroupControl.isStarted());
+   }
+
+   protected JGroupsChannelBroadcastGroupControl createManagementControl(final String name) throws Exception {
+      return ManagementControlHelper.createJgroupsChannelBroadcastGroupControl(name, mbeanServer);
+   }
+
+   @Override
+   @Before
+   public void setUp() throws Exception {
+      super.setUp();
+
+      TransportConfiguration connectorConfiguration = new TransportConfiguration(NETTY_CONNECTOR_FACTORY);
+      List<String> connectorInfos = new ArrayList<>();
+      connectorInfos.add(connectorConfiguration.getName());
+      PlainConfigurator configurator = new PlainConfigurator(jgroupsConfigString);
+      JChannel channel = new JChannel(configurator);
+
+      String channelName1 = "channel1";
+      ChannelBroadcastEndpointFactory endpointFactory = new ChannelBroadcastEndpointFactory(channel, channelName1);
+      broadcastGroupConfig = new BroadcastGroupConfiguration().setName(RandomUtil.randomString()).setBroadcastPeriod(RandomUtil.randomPositiveInt()).setConnectorInfos(connectorInfos).setEndpointFactory(endpointFactory);
+
+      Configuration config = createDefaultInVMConfig().setJMXManagementEnabled(true).addConnectorConfiguration(connectorConfiguration.getName(), connectorConfiguration).addBroadcastGroupConfiguration(broadcastGroupConfig);
+      server = addServer(ActiveMQServers.newActiveMQServer(config, mbeanServer, false));
+      server.start();
+
+      broadcastGroupControl = createManagementControl(broadcastGroupConfig.getName());
+   }
+}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/JGroupsFileBroadcastGroupControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/JGroupsFileBroadcastGroupControlTest.java
new file mode 100644
index 0000000..ca8646e
--- /dev/null
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/JGroupsFileBroadcastGroupControlTest.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.tests.integration.management;
+
+import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpointFactory;
+import org.apache.activemq.artemis.api.core.JsonUtil;
+import org.apache.activemq.artemis.api.core.TransportConfiguration;
+import org.apache.activemq.artemis.api.core.management.JGroupsFileBroadcastGroupControl;
+import org.apache.activemq.artemis.core.config.Configuration;
+import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.core.server.ActiveMQServers;
+import org.apache.activemq.artemis.utils.RandomUtil;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.json.JsonArray;
+import java.util.ArrayList;
+import java.util.List;
+
+public class JGroupsFileBroadcastGroupControlTest extends ManagementTestBase {
+
+   private ActiveMQServer server;
+   BroadcastGroupConfiguration broadcastGroupConfig;
+   JGroupsFileBroadcastGroupControl broadcastGroupControl;
+
+   @Test
+   public void testAttributes() throws Exception {
+      JGroupsFileBroadcastEndpointFactory udpCfg = (JGroupsFileBroadcastEndpointFactory) broadcastGroupConfig.getEndpointFactory();
+      Assert.assertEquals(broadcastGroupConfig.getName(), broadcastGroupControl.getName());
+      Assert.assertEquals(udpCfg.getChannelName(), broadcastGroupControl.getChannelName());
+      Assert.assertEquals(udpCfg.getFile(), broadcastGroupControl.getFile());
+      Assert.assertEquals(broadcastGroupConfig.getBroadcastPeriod(), broadcastGroupControl.getBroadcastPeriod());
+
+      Object[] connectorPairs = broadcastGroupControl.getConnectorPairs();
+      Assert.assertEquals(1, connectorPairs.length);
+
+      String connectorPairData = (String) connectorPairs[0];
+      Assert.assertEquals(broadcastGroupConfig.getConnectorInfos().get(0), connectorPairData);
+      String jsonString = broadcastGroupControl.getConnectorPairsAsJSON();
+      Assert.assertNotNull(jsonString);
+      JsonArray array = JsonUtil.readJsonArray(jsonString);
+      Assert.assertEquals(1, array.size());
+      Assert.assertEquals(broadcastGroupConfig.getConnectorInfos().get(0), array.getString(0));
+
+      Assert.assertTrue(broadcastGroupControl.isStarted());
+   }
+
+   protected JGroupsFileBroadcastGroupControl createManagementControl(final String name) throws Exception {
+      return ManagementControlHelper.createJgroupsFileBroadcastGroupControl(name, mbeanServer);
+   }
+
+   @Override
+   @Before
+   public void setUp() throws Exception {
+      super.setUp();
+
+      TransportConfiguration connectorConfiguration = new TransportConfiguration(NETTY_CONNECTOR_FACTORY);
+      List<String> connectorInfos = new ArrayList<>();
+      connectorInfos.add(connectorConfiguration.getName());
+      broadcastGroupConfig = new BroadcastGroupConfiguration().setName(RandomUtil.randomString()).setBroadcastPeriod(RandomUtil.randomPositiveInt()).setConnectorInfos(connectorInfos).setEndpointFactory(new JGroupsFileBroadcastEndpointFactory().setChannelName("myChannel").setFile("test-jgroups-file_ping.xml"));
+
+      Configuration config = createDefaultInVMConfig().setJMXManagementEnabled(true).addConnectorConfiguration(connectorConfiguration.getName(), connectorConfiguration).addBroadcastGroupConfiguration(broadcastGroupConfig);
+      server = addServer(ActiveMQServers.newActiveMQServer(config, mbeanServer, false));
+      server.start();
+
+      broadcastGroupControl = createManagementControl(broadcastGroupConfig.getName());
+   }
+}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementControlHelper.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementControlHelper.java
index 7211261..be7aa9e 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementControlHelper.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementControlHelper.java
@@ -29,6 +29,8 @@ import org.apache.activemq.artemis.api.core.management.BridgeControl;
 import org.apache.activemq.artemis.api.core.management.BroadcastGroupControl;
 import org.apache.activemq.artemis.api.core.management.ClusterConnectionControl;
 import org.apache.activemq.artemis.api.core.management.DivertControl;
+import org.apache.activemq.artemis.api.core.management.JGroupsChannelBroadcastGroupControl;
+import org.apache.activemq.artemis.api.core.management.JGroupsFileBroadcastGroupControl;
 import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
 import org.apache.activemq.artemis.api.core.management.QueueControl;
 import org.apache.activemq.artemis.api.core.RoutingType;
@@ -51,6 +53,16 @@ public class ManagementControlHelper {
       return (BroadcastGroupControl) ManagementControlHelper.createProxy(ObjectNameBuilder.DEFAULT.getBroadcastGroupObjectName(name), BroadcastGroupControl.class, mbeanServer);
    }
 
+   public static JGroupsFileBroadcastGroupControl createJgroupsFileBroadcastGroupControl(final String name,
+                                                                   final MBeanServer mbeanServer) throws Exception {
+      return (JGroupsFileBroadcastGroupControl) ManagementControlHelper.createProxy(ObjectNameBuilder.DEFAULT.getBroadcastGroupObjectName(name), JGroupsFileBroadcastGroupControl.class, mbeanServer);
+   }
+
+   public static JGroupsChannelBroadcastGroupControl createJgroupsChannelBroadcastGroupControl(final String name,
+                                                                                            final MBeanServer mbeanServer) throws Exception {
+      return (JGroupsChannelBroadcastGroupControl) ManagementControlHelper.createProxy(ObjectNameBuilder.DEFAULT.getBroadcastGroupObjectName(name), JGroupsChannelBroadcastGroupControl.class, mbeanServer);
+   }
+
    public static BridgeControl createBridgeControl(final String name, final MBeanServer mbeanServer) throws Exception {
       return (BridgeControl) ManagementControlHelper.createProxy(ObjectNameBuilder.DEFAULT.getBridgeObjectName(name), BridgeControl.class, mbeanServer);
    }


Mime
View raw message