📄 connectorclient.java
字号:
/*------------------------------------------------------------------------------Name: Main.javaProject: xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE file------------------------------------------------------------------------------*/package org.xmlBlaster.jmxgui;import javax.management.*;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.util.Global;import org.xmlBlaster.client.jmx.AsyncMBeanServer;import org.xmlBlaster.client.jmx.ConnectorFactory;import org.xmlBlaster.client.jmx.ConnectorException;import java.rmi.RemoteException;/** * Class that encapsulates Communication to xmlBlaster / MBeanServer from GUI */public class ConnectorClient { private static Logger log = Logger.getLogger(ConnectorClient.class.getName()); private Global glob = null; private static AsyncMBeanServer aServer = null; private final static String ME = "ConnectorClient"; private ConnectorFactory connectorFactory; public ConnectorClient(Global glob, String serverName) { this.glob = glob; // should we allow to pass null here for the global ? // If yes, then we should have a clear separation of the non-xmlBlaster code if (this.glob == null) this.glob = Global.instance(); //trying to establish connection to JmxServer log.info("New Connector client - trying to establish connection to JmxServer...."); try { this.connectorFactory = ConnectorFactory.getInstance(this.glob);// aServer = connectorFactory.createAsyncConnector("xmlBlaster", serverName); aServer = connectorFactory.getMBeanServer(serverName); } catch (ConnectorException ex) { log.severe("Error when creating AsyncMBeanServerInstance " + ex.toString()); ex.printStackTrace(); }// if ( aServer != null ) {log.info("Asynchron MBeanServer available: " + aServer.getDefaultDomain());}// else {log.severe("Error when creating AsyncMBeanServerInstance - Reference to Object Null");} } /** * Returns AsyncMBeanServer Object. For basic access to MBean-functions within the clients * @return * @throws ConnectorException */ public AsyncMBeanServer getServer() throws ConnectorException { if ( this.aServer != null ) { return this.aServer; } else { throw new ConnectorException("MBeanServer not available"); } }/** * Returns a list of servers that have a JMX-Server running * TODO: implement cluster-lookup from xmlBlaster-lib. * JMX-implementation not working correctly */ public String[] getServerList() { return this.connectorFactory.getMBeanServerList(); } /** * logout from Server */ public void logout() { if (log.isLoggable(Level.FINER)) log.finer("logout"); if (log.isLoggable(Level.FINEST)) Thread.currentThread().dumpStack(); aServer.close(); } /** * Returns Information about all attributes that are handeled by the given * MBean * @param name name of the MBean * @return Array of MBeanAttributeInfo */ public MBeanAttributeInfo[] exploreMBeansByObjectName(String name) { if (log.isLoggable(Level.FINER)) log.finer("exploreMBeansByObjectName '" + name + "'"); MBeanInfo mbInfo = getMBeanInfo(name); return mbInfo.getAttributes(); } /** * Discovers the attributes and operations that an MBean exposes for management. * @param name name of the Bean * @return MBeanInfo */ private MBeanInfo getMBeanInfo(String name) { if (log.isLoggable(Level.FINER)) log.finer("getMBeanInfo '" + name + "'"); MBeanInfo mbInfo = null; ObjectName RequestBroker = null; if (aServer != null ) { try { RequestBroker = new ObjectName(name); mbInfo = (MBeanInfo) aServer.getMBeanInfo(RequestBroker).get(); } catch (Exception ex) { log.severe("Error when retrieving information about " + name +" >> " + ex.toString()); ex.printStackTrace(); } } else log.severe("Lost AsyncServer!"); return mbInfo; } /** * Discovers the Operations that an MBEan exposes for management * @param name name of the Bean * @return Array of MBeanOperationInfo */ public MBeanOperationInfo[] exploreMBeanOperationsByObjectName(String name) { if (log.isLoggable(Level.FINER)) log.finer("exploreMBeanOperationsByObjectName '" + name + "'"); MBeanInfo mbInfo = getMBeanInfo(name); return mbInfo.getOperations(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -