abstractjmxsupport.java
来自「提供ESB 应用mule源代码 提供ESB 应用mule源代码」· Java 代码 · 共 90 行
JAVA
90 行
/* * $Id: AbstractJmxSupport.java 11307 2008-03-10 14:22:04Z tcarlson $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.module.management.support;import org.mule.api.MuleContext;import org.mule.util.StringUtils;import java.util.Collection;import java.util.List;import javax.management.MBeanServer;import javax.management.MBeanServerFactory;public abstract class AbstractJmxSupport implements JmxSupport{ /** * Resolve JMX domain clash by adding an incremented number suffix to the name. E.g. if * 'Mule.TradeProcessor' is already registered with the accessible MBeanServer, will return * 'Mule.TradeProcessor.1'. If the latter one is already registered, will return * 'Mule.TradeProcessor.2' and so on. * <p/> * If no clash detected, returns the domain name unmodified. * @param domain domain name causing a conflict * @return resolved non-conflicting domain name */ protected String resolveDomainClash(String domain) { List servers = MBeanServerFactory.findMBeanServer(null); if (servers.isEmpty()) { throw new IllegalStateException("MBeanServer is not available."); } MBeanServer server = (MBeanServer) servers.get(0); Collection registeredDomains = getDomains(server); int counter = 1; // Just append .<n> suffix to the domain for a start if (registeredDomains.contains(domain)) { domain += "." + counter; } // recheck in case there were any suffixed domains already while (registeredDomains.contains(domain)) { // append .<n> until we succeed domain = domain.substring(0, domain.lastIndexOf(".") + 1) + ++counter; } return domain; } /** * List all domains of this MBean server. * @param server server to contact * @return a collection of unique JMX domains */ protected abstract Collection getDomains(MBeanServer server); /** {@inheritDoc} */ public String getDomainName(MuleContext context) { // TODO add some config options to the JmxAgent String domain = DEFAULT_JMX_DOMAIN_PREFIX; String instanceId = StringUtils.defaultString(context.getConfiguration().getId()); if (instanceId.length() > 0) { domain += "." + instanceId; } JmxRegistrationContext ctx = JmxRegistrationContext.getCurrent(context); String resolvedDomain = ctx.getResolvedDomain(); if (StringUtils.isBlank(resolvedDomain)) { domain = resolveDomainClash(domain); ctx.setResolvedDomain(domain); } return domain; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?