git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1425871 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Davies 2012-12-26 10:53:41 +00:00
parent 1f8306b861
commit c37859a80a
7 changed files with 106 additions and 117 deletions

View File

@ -1178,7 +1178,7 @@ public class BrokerService implements Service {
this.useJmx = useJmx; this.useJmx = useJmx;
} }
public ObjectName getBrokerObjectName() throws IOException { public ObjectName getBrokerObjectName() throws MalformedObjectNameException {
if (brokerObjectName == null) { if (brokerObjectName == null) {
brokerObjectName = createBrokerObjectName(); brokerObjectName = createBrokerObjectName();
} }
@ -1998,9 +1998,9 @@ public class BrokerService implements Service {
} }
private ObjectName createConnectorObjectName(TransportConnector connector) throws MalformedObjectNameException { private ObjectName createConnectorObjectName(TransportConnector connector) throws MalformedObjectNameException {
return new ObjectName(getManagementContext().getJmxDomainName() + ":" + "BrokerName=" String objectNameStr = getBrokerObjectName().toString();
+ JMXSupport.encodeObjectNamePart(getBrokerName()) + "," + "Type=Connector," + "ConnectorName=" objectNameStr += ",connector=clientConnectors,connectorName="+ JMXSupport.encodeObjectNamePart(connector.getName());
+ JMXSupport.encodeObjectNamePart(connector.getName())); return new ObjectName(objectNameStr);
} }
protected void registerNetworkConnectorMBean(NetworkConnector connector) throws IOException { protected void registerNetworkConnectorMBean(NetworkConnector connector) throws IOException {
@ -2016,17 +2016,17 @@ public class BrokerService implements Service {
protected ObjectName createNetworkConnectorObjectName(NetworkConnector connector) protected ObjectName createNetworkConnectorObjectName(NetworkConnector connector)
throws MalformedObjectNameException { throws MalformedObjectNameException {
return new ObjectName(getManagementContext().getJmxDomainName() + ":" + "BrokerName=" String objectNameStr = getBrokerObjectName().toString();
+ JMXSupport.encodeObjectNamePart(getBrokerName()) + "," + "Type=NetworkConnector," objectNameStr += ",connector=networkConnectors,networkConnectorName="+ JMXSupport.encodeObjectNamePart(connector.getName());
+ "NetworkConnectorName=" + JMXSupport.encodeObjectNamePart(connector.getName())); return new ObjectName(objectNameStr);
} }
public ObjectName createDuplexNetworkConnectorObjectName(String transport) public ObjectName createDuplexNetworkConnectorObjectName(String transport)
throws MalformedObjectNameException { throws MalformedObjectNameException {
return new ObjectName(getManagementContext().getJmxDomainName() + ":" + "BrokerName=" String objectNameStr = getBrokerObjectName().toString();
+ JMXSupport.encodeObjectNamePart(getBrokerName()) + "," + "Type=NetworkConnector," objectNameStr += ",connector=duplexNetworkConnectors,networkConnectorName="+ JMXSupport.encodeObjectNamePart(transport);
+ "NetworkConnectorName=duplex" + JMXSupport.encodeObjectNamePart(transport)); return new ObjectName(objectNameStr);
} }
protected void unregisterNetworkConnectorMBean(NetworkConnector connector) { protected void unregisterNetworkConnectorMBean(NetworkConnector connector) {
@ -2043,9 +2043,9 @@ public class BrokerService implements Service {
protected void registerProxyConnectorMBean(ProxyConnector connector) throws IOException { protected void registerProxyConnectorMBean(ProxyConnector connector) throws IOException {
ProxyConnectorView view = new ProxyConnectorView(connector); ProxyConnectorView view = new ProxyConnectorView(connector);
try { try {
ObjectName objectName = new ObjectName(getManagementContext().getJmxDomainName() + ":" + "BrokerName=" String objectNameStr = getBrokerObjectName().toString();
+ JMXSupport.encodeObjectNamePart(getBrokerName()) + "," + "Type=ProxyConnector," objectNameStr += ",connector=proxyConnectors,proxyConnectorName="+ JMXSupport.encodeObjectNamePart(connector.getName());
+ "ProxyConnectorName=" + JMXSupport.encodeObjectNamePart(connector.getName())); ObjectName objectName = new ObjectName(objectNameStr);
AnnotatedMBean.registerMBean(getManagementContext(), view, objectName); AnnotatedMBean.registerMBean(getManagementContext(), view, objectName);
} catch (Throwable e) { } catch (Throwable e) {
throw IOExceptionSupport.create("Broker could not be registered in JMX: " + e.getMessage(), e); throw IOExceptionSupport.create("Broker could not be registered in JMX: " + e.getMessage(), e);
@ -2057,9 +2057,9 @@ public class BrokerService implements Service {
protected void registerJmsConnectorMBean(JmsConnector connector) throws IOException { protected void registerJmsConnectorMBean(JmsConnector connector) throws IOException {
JmsConnectorView view = new JmsConnectorView(connector); JmsConnectorView view = new JmsConnectorView(connector);
try { try {
ObjectName objectName = new ObjectName(getManagementContext().getJmxDomainName() + ":" + "BrokerName=" String objectNameStr = getBrokerObjectName().toString();
+ JMXSupport.encodeObjectNamePart(getBrokerName()) + "," + "Type=JmsConnector," objectNameStr += ",connector=jmsConnectors,JmsConnectors="+ JMXSupport.encodeObjectNamePart(connector.getName());
+ "JmsConnectorName=" + JMXSupport.encodeObjectNamePart(connector.getName())); ObjectName objectName = new ObjectName(objectNameStr);
AnnotatedMBean.registerMBean(getManagementContext(), view, objectName); AnnotatedMBean.registerMBean(getManagementContext(), view, objectName);
} catch (Throwable e) { } catch (Throwable e) {
throw IOExceptionSupport.create("Broker could not be registered in JMX: " + e.getMessage(), e); throw IOExceptionSupport.create("Broker could not be registered in JMX: " + e.getMessage(), e);
@ -2123,8 +2123,13 @@ public class BrokerService implements Service {
protected Broker createRegionBroker(DestinationInterceptor destinationInterceptor) throws IOException { protected Broker createRegionBroker(DestinationInterceptor destinationInterceptor) throws IOException {
RegionBroker regionBroker; RegionBroker regionBroker;
if (isUseJmx()) { if (isUseJmx()) {
try {
regionBroker = new ManagedRegionBroker(this, getManagementContext(), getBrokerObjectName(), regionBroker = new ManagedRegionBroker(this, getManagementContext(), getBrokerObjectName(),
getTaskRunnerFactory(), getConsumerSystemUsage(), destinationFactory, destinationInterceptor,getScheduler(),getExecutor()); getTaskRunnerFactory(), getConsumerSystemUsage(), destinationFactory, destinationInterceptor,getScheduler(),getExecutor());
}catch(MalformedObjectNameException me){
LOG.error("Couldn't create ManagedRegionBroker",me);
throw new IOException(me);
}
} else { } else {
regionBroker = new RegionBroker(this, getTaskRunnerFactory(), getConsumerSystemUsage(), destinationFactory, regionBroker = new RegionBroker(this, getTaskRunnerFactory(), getConsumerSystemUsage(), destinationFactory,
destinationInterceptor,getScheduler(),getExecutor()); destinationInterceptor,getScheduler(),getExecutor());
@ -2173,10 +2178,10 @@ public class BrokerService implements Service {
if (isUseJmx()) { if (isUseJmx()) {
JobSchedulerViewMBean view = new JobSchedulerView(sb.getJobScheduler()); JobSchedulerViewMBean view = new JobSchedulerView(sb.getJobScheduler());
try { try {
ObjectName objectName = new ObjectName(getManagementContext().getJmxDomainName() + ":"
+ "BrokerName=" + JMXSupport.encodeObjectNamePart(getBrokerName()) + ","
+ "Type=jobScheduler," + "jobSchedulerName=JMS");
String objectNameStr = getBrokerObjectName().toString();
objectNameStr += ",service=JobScheduler,name=JMS";
ObjectName objectName = new ObjectName(objectNameStr);
AnnotatedMBean.registerMBean(getManagementContext(), view, objectName); AnnotatedMBean.registerMBean(getManagementContext(), view, objectName);
this.adminView.setJMSJobScheduler(objectName); this.adminView.setJMSJobScheduler(objectName);
} catch (Throwable e) { } catch (Throwable e) {
@ -2190,10 +2195,9 @@ public class BrokerService implements Service {
if (isUseJmx()) { if (isUseJmx()) {
HealthViewMBean statusView = new HealthView((ManagedRegionBroker)getRegionBroker()); HealthViewMBean statusView = new HealthView((ManagedRegionBroker)getRegionBroker());
try { try {
ObjectName objectName = new ObjectName(getManagementContext().getJmxDomainName() + ":" String objectNameStr = getBrokerObjectName().toString();
+ "BrokerName=" + JMXSupport.encodeObjectNamePart(getBrokerName()) + "," objectNameStr += ",service=Health";
+ "Type=Health"); ObjectName objectName = new ObjectName(objectNameStr);
AnnotatedMBean.registerMBean(getManagementContext(), statusView, objectName); AnnotatedMBean.registerMBean(getManagementContext(), statusView, objectName);
} catch (Throwable e) { } catch (Throwable e) {
throw IOExceptionSupport.create("Status MBean could not be registered in JMX: " throw IOExceptionSupport.create("Status MBean could not be registered in JMX: "
@ -2243,13 +2247,10 @@ public class BrokerService implements Service {
} }
} }
protected ObjectName createBrokerObjectName() throws IOException { protected ObjectName createBrokerObjectName() throws MalformedObjectNameException {
try { String objectNameStr = getManagementContext().getJmxDomainName() + ":type=Broker,brokerName=";
return new ObjectName(getManagementContext().getJmxDomainName() + ":" + "BrokerName=" objectNameStr += JMXSupport.encodeObjectNamePart(getBrokerName());
+ JMXSupport.encodeObjectNamePart(getBrokerName()) + "," + "Type=Broker"); return new ObjectName(objectNameStr);
} catch (Throwable e) {
throw IOExceptionSupport.create("Invalid JMX broker name: " + brokerName, e);
}
} }
protected TransportConnector createTransportConnector(URI brokerURI) throws Exception { protected TransportConnector createTransportConnector(URI brokerURI) throws Exception {

View File

@ -149,9 +149,9 @@ public class ConnectionView implements ConnectionViewMBean {
private ObjectName createConsumerQueury(String clientId) throws IOException { private ObjectName createConsumerQueury(String clientId) throws IOException {
try { try {
return new ObjectName(managementContext.getJmxDomainName() + ":" + "BrokerName=*," return new ObjectName(managementContext.getJmxDomainName() + ":type=Broker,brokerName=*,"
+ "Type=Subscription,persistentMode=*,"
+ "destinationType=*,destinationName=*," + "destinationType=*,destinationName=*,"
+ "endpoint=Consumer,"
+ "clientId=" + JMXSupport.encodeObjectNamePart(clientId) + "," + "clientId=" + JMXSupport.encodeObjectNamePart(clientId) + ","
+ "consumerId=*"); + "consumerId=*");
} catch (Throwable e) { } catch (Throwable e) {
@ -161,11 +161,11 @@ public class ConnectionView implements ConnectionViewMBean {
private ObjectName createProducerQueury(String clientId) throws IOException { private ObjectName createProducerQueury(String clientId) throws IOException {
try { try {
return new ObjectName(managementContext.getJmxDomainName() + ":" + "BrokerName=*," return new ObjectName(managementContext.getJmxDomainName() + ":type=Broker,brokerName=*,"
+ "Type=Producer," + "destinationType=*,destinationName=*,"
+ "destinationType=*,destinationName=*," + "endpoint=Producer,"
+ "clientId=" + JMXSupport.encodeObjectNamePart(clientId) + "," + "clientId=" + JMXSupport.encodeObjectNamePart(clientId) + ","
+ "producerId=*"); + "producerId=*");
} catch (Throwable e) { } catch (Throwable e) {
throw IOExceptionSupport.create(e); throw IOExceptionSupport.create(e);
} }

View File

@ -35,6 +35,7 @@ import org.apache.activemq.usage.SystemUsage;
public class HealthView implements HealthViewMBean { public class HealthView implements HealthViewMBean {
ManagedRegionBroker broker; ManagedRegionBroker broker;
String currentState = "Good";
public HealthView(ManagedRegionBroker broker) { public HealthView(ManagedRegionBroker broker) {
this.broker = broker; this.broker = broker;
@ -172,7 +173,24 @@ public class HealthView implements HealthViewMBean {
} }
} }
if (answer != null && !answer.isEmpty()){
this.currentState = "Feeling Ill {";
for (HealthStatus hs: answer){
currentState += hs + " , ";
}
currentState += " }";
} else{
this.currentState="Good";
}
return answer; return answer;
} }
/**
* @return String representation of the current Broker state
*/
@Override
public String getCurrentStatus() {
return this.currentState;
}
} }

View File

@ -33,5 +33,12 @@ public interface HealthViewMBean {
* *
* If in doubt, please use the {@link #status()} method instead! * If in doubt, please use the {@link #status()} method instead!
*/ */
@MBeanInfo("List of warnings and errors about the current health of the Broker - empty list is Good!")
List<HealthStatus> healthList() throws Exception; List<HealthStatus> healthList() throws Exception;
/**
* @return String representation of the current Broker state
*/
@MBeanInfo("String representation of current Broker state")
String getCurrentStatus();
} }

View File

@ -40,23 +40,12 @@ import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.TabularData; import javax.management.openmbean.TabularData;
import javax.management.openmbean.TabularDataSupport; import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType; import javax.management.openmbean.TabularType;
import org.apache.activemq.broker.Broker; import org.apache.activemq.broker.Broker;
import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.ConnectionContext; import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.ProducerBrokerExchange; import org.apache.activemq.broker.ProducerBrokerExchange;
import org.apache.activemq.broker.jmx.OpenTypeSupport.OpenTypeFactory; import org.apache.activemq.broker.jmx.OpenTypeSupport.OpenTypeFactory;
import org.apache.activemq.broker.region.Destination; import org.apache.activemq.broker.region.*;
import org.apache.activemq.broker.region.DestinationFactory;
import org.apache.activemq.broker.region.DestinationFactoryImpl;
import org.apache.activemq.broker.region.DestinationInterceptor;
import org.apache.activemq.broker.region.Queue;
import org.apache.activemq.broker.region.Region;
import org.apache.activemq.broker.region.RegionBroker;
import org.apache.activemq.broker.region.Subscription;
import org.apache.activemq.broker.region.Topic;
import org.apache.activemq.broker.region.TopicRegion;
import org.apache.activemq.broker.region.TopicSubscription;
import org.apache.activemq.broker.region.policy.AbortSlowConsumerStrategy; import org.apache.activemq.broker.region.policy.AbortSlowConsumerStrategy;
import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.command.ActiveMQMessage; import org.apache.activemq.command.ActiveMQMessage;
@ -228,27 +217,15 @@ public class ManagedRegionBroker extends RegionBroker {
} }
public static String getSubscriptionObjectName(ConsumerInfo info, String connectionClientId, ObjectName brokerJmxObjectName) { public static String getSubscriptionObjectName(ConsumerInfo info, String connectionClientId, ObjectName brokerJmxObjectName) {
Hashtable<String, String> map = brokerJmxObjectName.getKeyPropertyList(); String objectNameStr = brokerJmxObjectName.toString();
String brokerDomain = brokerJmxObjectName.getDomain(); objectNameStr += getDestinationType(info.getDestination()) + ",endpoint=Consumer";
String objectNameStr = brokerDomain + ":" + "BrokerName=" + map.get("BrokerName") + ",Type=Subscription,"; objectNameStr += ",clientId=" + JMXSupport.encodeObjectNamePart(connectionClientId);
String destinationType = "destinationType=" + info.getDestination().getDestinationTypeAsString(); objectNameStr += ",consumerId=";
String destinationName = "destinationName=" + JMXSupport.encodeObjectNamePart(info.getDestination().getPhysicalName()); if (info.isDurable()){
String clientId = "clientId=" + JMXSupport.encodeObjectNamePart(connectionClientId); objectNameStr += "Durable(" + JMXSupport.encodeObjectNamePart(connectionClientId + ":" + info.getSubscriptionName()) +")";
String persistentMode = "persistentMode=";
String consumerId = "";
if (info.isDurable()) {
persistentMode += "Durable,subscriptionID=" + JMXSupport.encodeObjectNamePart(info.getSubscriptionName());
} else { } else {
persistentMode += "Non-Durable"; objectNameStr += JMXSupport.encodeObjectNamePart(info.getConsumerId().toString());
if (info.getConsumerId() != null) {
consumerId = ",consumerId=" + JMXSupport.encodeObjectNamePart(info.getConsumerId().toString());
}
} }
objectNameStr += persistentMode + ",";
objectNameStr += destinationType + ",";
objectNameStr += destinationName + ",";
objectNameStr += clientId;
objectNameStr += consumerId;
return objectNameStr; return objectNameStr;
} }
@ -698,39 +675,33 @@ public class ManagedRegionBroker extends RegionBroker {
this.contextBroker = contextBroker; this.contextBroker = contextBroker;
} }
protected ObjectName createObjectName(ActiveMQDestination destName) throws MalformedObjectNameException { protected ObjectName createObjectName(ActiveMQDestination destination) throws MalformedObjectNameException {
// Build the object name for the destination // Build the object name for the destination
Hashtable<String, String> map = brokerObjectName.getKeyPropertyList(); String objectNameStr = brokerObjectName.toString();
ObjectName objectName = new ObjectName(brokerObjectName.getDomain() + ":" + "BrokerName=" + map.get("BrokerName") + "," + "Type=" objectNameStr += getDestinationType(destination);
+ JMXSupport.encodeObjectNamePart(destName.getDestinationTypeAsString()) + "," + "Destination=" return new ObjectName(objectNameStr);
+ JMXSupport.encodeObjectNamePart(destName.getPhysicalName())); }
return objectName;
protected static String getDestinationType(ActiveMQDestination destination){
String result = "";
if (destination != null){
result = ",destinationType="+ JMXSupport.encodeObjectNamePart(destination.getDestinationTypeAsString()) + ",destinationName=" + JMXSupport.encodeObjectNamePart(destination.getPhysicalName());
}
return result;
} }
protected ObjectName createObjectName(ProducerInfo producerInfo, String connectionClientId) throws MalformedObjectNameException { protected ObjectName createObjectName(ProducerInfo producerInfo, String connectionClientId) throws MalformedObjectNameException {
// Build the object name for the producer info String objectNameStr = brokerObjectName.toString();
Hashtable<String, String> map = brokerObjectName.getKeyPropertyList();
String destinationType = "destinationType=";
String destinationName = "destinationName=";
if (producerInfo.getDestination() == null) { if (producerInfo.getDestination() == null) {
destinationType += "Dynamic"; objectNameStr += ",endpoint=dynamicProducer";
destinationName = null;
} else { } else {
destinationType += producerInfo.getDestination().getDestinationTypeAsString(); objectNameStr += getDestinationType(producerInfo.getDestination()) + ",endpoint=Producer";
destinationName += JMXSupport.encodeObjectNamePart(producerInfo.getDestination().getPhysicalName());
} }
String clientId = "clientId=" + JMXSupport.encodeObjectNamePart(connectionClientId); objectNameStr += ",clientId=" + JMXSupport.encodeObjectNamePart(connectionClientId);
String producerId = "producerId=" + JMXSupport.encodeObjectNamePart(producerInfo.getProducerId().toString()); objectNameStr += ",producerId=" + JMXSupport.encodeObjectNamePart(producerInfo.getProducerId().toString());
return new ObjectName(objectNameStr);
ObjectName objectName = new ObjectName(brokerObjectName.getDomain() + ":" + "BrokerName=" + map.get("BrokerName") + ","
+ "Type=Producer" + ","
+ destinationType + ","
+ (destinationName != null ? destinationName + "," : "")
+ clientId + "," + producerId);
return objectName;
} }
public ObjectName registerSlowConsumerStrategy(AbortSlowConsumerStrategy strategy) throws MalformedObjectNameException { public ObjectName registerSlowConsumerStrategy(AbortSlowConsumerStrategy strategy) throws MalformedObjectNameException {
@ -750,9 +721,8 @@ public class ManagedRegionBroker extends RegionBroker {
} }
protected ObjectName createObjectName(XATransaction transaction) throws MalformedObjectNameException { protected ObjectName createObjectName(XATransaction transaction) throws MalformedObjectNameException {
Hashtable<String, String> map = brokerObjectName.getKeyPropertyList(); ObjectName objectName = new ObjectName(brokerObjectName.toString()
ObjectName objectName = new ObjectName(brokerObjectName.getDomain() + ":" + "BrokerName=" + map.get("BrokerName") + "," + "transactionType=RecoveredXaTransaction"
+ "," + "Type=RecoveredXaTransaction"
+ "," + "Xid=" + "," + "Xid="
+ JMXSupport.encodeObjectNamePart(transaction.getTransactionId().toString())); + JMXSupport.encodeObjectNamePart(transaction.getTransactionId().toString()));
return objectName; return objectName;
@ -789,9 +759,10 @@ public class ManagedRegionBroker extends RegionBroker {
} }
private ObjectName createObjectName(AbortSlowConsumerStrategy strategy) throws MalformedObjectNameException{ private ObjectName createObjectName(AbortSlowConsumerStrategy strategy) throws MalformedObjectNameException{
String objectNameStr = this.brokerObjectName.toString();
objectNameStr += "Service=SlowConsumerStrategy,InstanceName="+ JMXSupport.encodeObjectNamePart(strategy.getName());
Hashtable<String, String> map = brokerObjectName.getKeyPropertyList(); Hashtable<String, String> map = brokerObjectName.getKeyPropertyList();
ObjectName objectName = new ObjectName(brokerObjectName.getDomain() + ":" + "BrokerName=" + map.get("BrokerName") + "," ObjectName objectName = new ObjectName(objectNameStr);
+ "Type=SlowConsumerStrategy," + "InstanceName=" + JMXSupport.encodeObjectNamePart(strategy.getName()));
return objectName; return objectName;
} }

View File

@ -17,10 +17,8 @@
package org.apache.activemq.broker.jmx; package org.apache.activemq.broker.jmx;
import java.io.IOException; import java.io.IOException;
import java.util.Hashtable;
import javax.management.ObjectName; import javax.management.ObjectName;
import org.apache.activemq.broker.Broker; import org.apache.activemq.broker.Broker;
import org.apache.activemq.broker.TransportConnection; import org.apache.activemq.broker.TransportConnection;
import org.apache.activemq.broker.TransportConnector; import org.apache.activemq.broker.TransportConnector;
@ -116,27 +114,21 @@ public class ManagedTransportConnection extends TransportConnection {
} }
protected ObjectName createByAddressObjectName(String type, String value) throws IOException { protected ObjectName createByAddressObjectName(String type, String value) throws IOException {
Hashtable<String, String> map = connectorName.getKeyPropertyList();
try { try {
return new ObjectName(connectorName.getDomain() + ":" + "BrokerName=" String objectNameStr = connectorName.toString();
+ JMXSupport.encodeObjectNamePart((String)map.get("BrokerName")) + "," objectNameStr += ",connectionViewType=" + JMXSupport.encodeObjectNamePart(type);
+ "Type=Connection," + "ConnectorName=" objectNameStr += ",connectionName="+JMXSupport.encodeObjectNamePart(value);
+ JMXSupport.encodeObjectNamePart((String)map.get("ConnectorName")) + "," return new ObjectName(objectNameStr);
+ "ViewType=" + JMXSupport.encodeObjectNamePart(type) + "," + "Name="
+ JMXSupport.encodeObjectNamePart(value));
} catch (Throwable e) { } catch (Throwable e) {
throw IOExceptionSupport.create(e); throw IOExceptionSupport.create(e);
} }
} }
protected ObjectName createByClientIdObjectName(String value) throws IOException { protected ObjectName createByClientIdObjectName(String value) throws IOException {
Hashtable<String, String> map = connectorName.getKeyPropertyList();
try { try {
return new ObjectName(connectorName.getDomain() + ":" + "BrokerName=" String objectNameStr = connectorName.toString();
+ JMXSupport.encodeObjectNamePart((String)map.get("BrokerName")) + "," objectNameStr += ",connectionName="+JMXSupport.encodeObjectNamePart(value);
+ "Type=Connection," + "ConnectorName=" return new ObjectName(objectNameStr);
+ JMXSupport.encodeObjectNamePart((String)map.get("ConnectorName")) + ","
+ "Connection=" + JMXSupport.encodeObjectNamePart(value));
} catch (Throwable e) { } catch (Throwable e) {
throw IOExceptionSupport.create(e); throw IOExceptionSupport.create(e);
} }

View File

@ -74,7 +74,7 @@ public class SubscriptionView implements SubscriptionViewMBean {
if (managementCtx != null) { if (managementCtx != null) {
try { try {
ObjectName query = createConnectionQueury(managementCtx, service.getBrokerName()); ObjectName query = createConnectionQuery(managementCtx, service.getBrokerName());
Set<ObjectName> names = managementCtx.queryNames(query, null); Set<ObjectName> names = managementCtx.queryNames(query, null);
if (names.size() == 1) { if (names.size() == 1) {
result = names.iterator().next(); result = names.iterator().next();
@ -87,12 +87,12 @@ public class SubscriptionView implements SubscriptionViewMBean {
return result; return result;
} }
private ObjectName createConnectionQueury(ManagementContext ctx, String brokerName) throws IOException { private ObjectName createConnectionQuery(ManagementContext ctx, String brokerName) throws IOException {
try { try {
return new ObjectName(ctx.getJmxDomainName() + ":" + "BrokerName=" return new ObjectName(ctx.getJmxDomainName() + ":type=Broker,brokerName="
+ JMXSupport.encodeObjectNamePart(brokerName) + "," + JMXSupport.encodeObjectNamePart(brokerName) + ","
+ "Type=Connection," + "ConnectorName=*," + "connector=*," + "connectorName=*,"
+ "Connection=" + JMXSupport.encodeObjectNamePart(clientId)); + "connectionName=" + JMXSupport.encodeObjectNamePart(clientId));
} catch (Throwable e) { } catch (Throwable e) {
throw IOExceptionSupport.create(e); throw IOExceptionSupport.create(e);
} }