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 <[email protected]>
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);
}