⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connectorfactory.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      ConnectorFactory.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE file------------------------------------------------------------------------------*/package org.xmlBlaster.client.jmx;import javax.management.*;import java.lang.reflect.*;import java.util.logging.Logger;import org.xmlBlaster.util.Global;import java.util.TreeMap;import java.util.Iterator;public class ConnectorFactory  {   private volatile static ConnectorFactory singletonFactory;   private static Global applicationGlobal;   private static Object syncObject = new Object();   private Global global;   private static Logger log = Logger.getLogger(ConnectorFactory.class.getName());   private TreeMap childGlobals;   private TreeMap servers;   public static ConnectorFactory getInstance(Global global) {      if (singletonFactory == null) {         synchronized(syncObject) {            if (singletonFactory == null) {               singletonFactory = new ConnectorFactory(global);               applicationGlobal = global;            }         }      }      if (global != applicationGlobal) {         log.severe("getInstance: The global used for this invocation is not the same as the application global");         Thread.dumpStack();      }      return singletonFactory;   }   private ConnectorFactory(Global global) {      this.global = global;      this.childGlobals = new TreeMap();      this.servers = new TreeMap();   }   /**    * Creates an instance of an AsyncMBeanServer.     * @param transport the string identifying the communication type. Currently only    * xmlBlaster is supported.    * @param serverName the name of the server to create. If null is passed, '127.0.0.1' is    * assumed.    */   private synchronized AsyncMBeanServer addAsyncConnector(String transport, String serverName)       throws ConnectorException {      AsyncMBeanServer server = null;      if (transport.equalsIgnoreCase("xmlBlaster")) {         Global childGlobal = this.global.getClone(null);         this.childGlobals.put(serverName, childGlobal);         try {            server = (AsyncMBeanServer)Proxy.newProxyInstance(               Thread.currentThread().getContextClassLoader(),               new Class[] { AsyncMBeanServer.class },               new XmlBlasterInvocationHandler(serverName, childGlobal));            this.servers.put(serverName, server);            return server;         }         catch (Exception e) {            e.printStackTrace();            throw new ConnectorException("Error connecting to xmlBlaster Service", e);         }      }      else throw new ConnectorException("Unknown transport " + transport);   }   /**     * returns the async mbean server within this child global. It returns null if no one    * has been added yet.    */   private AsyncMBeanServer getExistingAsyncConnector(String serverName) {      return (AsyncMBeanServer)this.servers.get(serverName);   }   /**    * Gets the async mbean server specified with the given name.    * @param global is the parent global, i.e. the global configured on application start.    */   public AsyncMBeanServer getMBeanServer(String serverName) throws ConnectorException {      String transport = "xmlBlaster"; // in future it could be passed in the args.      AsyncMBeanServer server = getExistingAsyncConnector(serverName);      try {         if (server == null) {            server = addAsyncConnector(transport, serverName);            ObjectName requestBroker_name = new ObjectName(transport + ":name=requestBroker");            server.createMBean("org.xmlBlaster.engine.RequestBroker",requestBroker_name);         }      }      catch (Exception ex) {         log.severe("Exception occured in 'getMBeanServers': " + ex.getMessage());         ex.printStackTrace();         throw new ConnectorException("Error when retreiving mbean server ", ex);      }      return server;   }   public String[] getMBeanServerList() {      Iterator iter = this.servers.values().iterator();      String[] ret = new String[this.servers.size()];      int i=0;      try {         while (iter.hasNext()) {            AsyncMBeanServer server = (AsyncMBeanServer)iter.next();            ObjectName requestBroker_name = new ObjectName("xmlBlaster:name=requestBroker");            ret[i] = server.getAttribute(requestBroker_name,"NodeList").get().toString();            i++;         }      }      catch(Exception ex) {         log.severe("Exception occured in 'getMBeanServerList': " + ex.getMessage());         ex.printStackTrace();      }      return ret;   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -