📄 commandmanager.java
字号:
ret.append(str[i]).append("\n"); } else { ret.append(obj); } } MsgUnit msgUnit = new MsgUnit("<key oid='__cmd:"+cmd+"'/>", ret.toString().getBytes(), "<qos/>"); return new MsgUnit[] { msgUnit }; } try { CommandWrapper w = new CommandWrapper(glob, oid); if (args != null) w.setArgs(args); String key = w.getThirdLevel(); if (w.getThirdLevel().startsWith("?")) { key = "DEFAULT"; // One handler needs to register itself with "DEFAULT" } Object obj = this.handlerMap.get(key); // e.g. "topic" or "client" or "sysprop" if (obj == null) { throw new XmlBlasterException(glob, ErrorCode.USER_ILLEGALARGUMENT, ME, "Sorry can't process your command '" + oid + "', '" + w.getThirdLevel() + "' has no registered handler (key=" + key + ")"); } I_CommandHandler handler = (I_CommandHandler)obj; MsgUnit[] ret = handler.get(addressServer, sessionId, w); if (ret == null) ret = new MsgUnit[0]; return ret; //return (ret==null) ? "<qos><state id='NOT_FOUND' info='" + w.getCommand() + " has no results.'/></qos>" : ret; } catch (XmlBlasterException e) { throw e; } catch (Throwable e) { e.printStackTrace(); throw XmlBlasterException.convert(glob, ME, "get("+oid+")", e); } } /** * @param sessionId Is null if not logged in * @param cmd The query string * @return The SetReturn object:<br /> * setReturn.returnString contains the actually set value or is null if not set. */ public final SetReturn set(AddressServer addressServer, String sessionId, String cmd) throws XmlBlasterException { if (addressServer == null) { addressServer = this.sessionInfo.getAddressServer(); // uses requestBroker.unsecureSessionInfo } if (sessionId == null) { sessionId = this.sessionInfo.getSecuritySession().getSecretSessionId(); } if (log.isLoggable(Level.FINER)) log.finer("set(" + cmd + ")"); if (cmd == null || cmd.length() < 1) throw new XmlBlasterException(glob, ErrorCode.USER_ILLEGALARGUMENT, ME, "Please pass a command which is not null"); if (cmd.startsWith(ContextNode.SCHEMA_JMX_DOMAIN)) { // JMX query starts with "org.xmlBlaster:" // ObjectName = org.xmlBlaster:nodeClass=node,node="heron" // org.xmlBlaster:nodeClass=node,node="heron"/action=getFreeMemStr // org.xmlBlaster:nodeClass=node,node="heron"/action=usage?action=usage // java -Djmx.invoke.getters=set ... org.xmlBlaster.Main // org.xmlBlaster:nodeClass=node,node="heron"/action=getLastWarning?action=getLastWarning // org.xmlBlaster:nodeClass=node,node="heron"/action=getLastWarning // org.xmlBlaster:nodeClass=node,node="avalon_mycomp_com",clientClass=client,client="heron.mycomp.com",sessionClass=session,session="1"/action=getConnectionState Object obj = JmxWrapper.getInstance(this.glob).invokeCommand(cmd); StringBuffer ret = new StringBuffer(1024); if (obj != null) { if (obj instanceof String[]) { String[] str = (String[])obj; for(int i=0; i<str.length; i++) ret.append(str[i]).append("\n"); } else { ret.append(obj); } } return new SetReturn(null, ret.toString()); } try { CommandWrapper w = new CommandWrapper(glob, cmd); String key = w.getThirdLevel(); if (w.getThirdLevel().startsWith("?")) { key = "DEFAULT"; // One handler needs to register itself with "DEFAULT" } Object obj = this.handlerMap.get(key); if (obj == null) { throw new XmlBlasterException(glob, ErrorCode.USER_ILLEGALARGUMENT, ME, "Sorry can't process your command '" + cmd + "', the third level '" + w.getThirdLevel() + "' has no registered handler (key=" + key + ")"); } I_CommandHandler handler = (I_CommandHandler)obj; return new SetReturn(w, handler.set(addressServer, sessionId, w)); } catch (XmlBlasterException e) { throw e; } catch (Throwable e) { e.printStackTrace(); throw XmlBlasterException.convert(glob, ME, "set("+cmd+")", e); } } /** */ public String help() { return " XmlBlaster administration, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.commands.html"; } /** */ public String help(String cmd) { return help(); } public void shutdown() { if (this.externMap != null && this.externMap.size() > 0) { I_ExternGateway[] arr = (I_ExternGateway [])this.externMap.values().toArray(new I_ExternGateway[this.externMap.size()]); for (int ii=0; ii<arr.length; ii++) { arr[ii].shutdown(); } externMap.clear(); } if (this.handlerMap != null && this.handlerMap.size() > 0) { I_CommandHandler[] arr = (I_CommandHandler [])this.handlerMap.values().toArray(new I_CommandHandler[this.handlerMap.size()]); for (int ii=0; ii<arr.length; ii++) { arr[ii].shutdown(); // If a handler has registered multiple times, it should be able to handle multiple shutdowns } this.handlerMap.clear(); } } /** * A human readable name of the listener for logging. * <p /> * Enforced by I_RunlevelListener */ public String getName() { return ME; } /** * Invoked on run level change, see RunlevelManager.RUNLEVEL_HALTED and RunlevelManager.RUNLEVEL_RUNNING * <p /> * Enforced by I_RunlevelListener */ public void runlevelChange(int from, int to, boolean force) throws org.xmlBlaster.util.XmlBlasterException { if (log.isLoggable(Level.FINER)) log.finer("Changing from run level=" + from + " to level=" + to + " with force=" + force); if (to == from) return; if (to > from) { // startup if (to == RunlevelManager.RUNLEVEL_STANDBY) { initializeInternal(); initializeExternal(); log.info("Administration manager is ready"); } } if (to < from) { // shutdown if (to == RunlevelManager.RUNLEVEL_HALTED) { shutdown(); } } } /** * Dump state of this object into a XML ASCII string. */ public final String toXml() { return toXml((String)null); } /** * Dump state of this object into a XML ASCII string. * @param extraOffset indenting of tags for nice output */ public synchronized final String toXml(String extraOffset) { StringBuffer sb = new StringBuffer(1024); String offset = "\n "; if (extraOffset == null) extraOffset = ""; offset += extraOffset; sb.append(offset).append("<commandManager>"); /* if (externMap != null && externMap.size() > 0) { Iterator it = externMap.values().iterator(); while (it.hasNext()) { I_ExternGatewax gw = (I_ExternGateway)it.next(); sb.append(gw.toXml(extraOffset + " ")); } externMap.clear(); } if (handlerMap != null && handlerMap.size() > 0) { Iterator it = handlerMap.values().iterator(); while (it.hasNext()) { I_CommandHandler cmd = (I_CommandHandler)it.next(); sb.append(cmd.toXml(extraOffset + " ")); } } */ sb.append(offset).append("</commandManager>"); return sb.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -