📄 adminproxy.java
字号:
System.exit(0); } else if (cmd.equals(GC)) { Runtime runtime = Runtime.getRuntime(); writer.println("before: " + runtime.freeMemory() + " octets free / " + runtime.totalMemory() + " octets."); runtime.gc(); writer.println("after: " + runtime.freeMemory() + " octets free / " + runtime.totalMemory() + " octets."); } else if (cmd.equals(SET_VARIABLE)) { try { if (st.countTokens() != 2) throw new Exception("Usage: set property value"); String property = st.nextToken(); String value = st.nextToken(); // finds variable class and name int pindex = property.lastIndexOf('.'); if (pindex == -1) { // bad formed property name, ignores throw new Exception("bad formed property name: " + property); } String varClassName = property.substring(0, pindex); String varName = property.substring(pindex + 1); try { // finds variable Class varClass = Class.forName(varClassName); Field var = varClass.getDeclaredField(varName); // sets variable according to its type String varType = var.getType().getName(); if (varType.equals("boolean") || varType.equals("java.lang.Boolean")) { var.set(null, new Boolean(value)); } else if (varType.equals("int") || varType.equals("java.lang.Integer")) { var.set(null, new Integer(value)); } else if (varType.equals("java.lang.String")) { var.set(null, value); } else { throw new Exception("error setting property " + varClassName + "." + varName + ": unexpected type " + varType); } } catch (Exception exc) { if (debug) exc.printStackTrace(writer); throw new Exception("error setting property " + varClassName + "." + varName + ": " + exc.getMessage()); } writer.println("done."); } catch (Exception exc) { writer.println(exc.getMessage()); } } else if (cmd.equals(GET_VARIABLE)) { try { if (st.countTokens() != 1) throw new Exception("Usage: get property"); String property = st.nextToken(); // finds variable class and name int pindex = property.lastIndexOf('.'); if (pindex == -1) { // bad formed property name, ignores throw new Exception("bad formed property name: " + property); } String varClassName = property.substring(0, pindex); String varName = property.substring(pindex + 1); try { // finds variable Class varClass = Class.forName(varClassName); Field var = varClass.getDeclaredField(varName); // get the variable value Object value = var.get(null); writer.println(property + " = " + value); } catch (Exception exc) { if (debug) exc.printStackTrace(writer); throw new Exception("error getting property " + varClassName + "." + varName + ": " + exc.getMessage()); } } catch (Exception exc) { writer.println(exc.getMessage()); } } else if (cmd.equals(THREADS)) { String group = null; if (st.hasMoreTokens()) group = st.nextToken(); ThreadGroup tg = Thread.currentThread().getThreadGroup(); while (tg.getParent() != null) tg = tg.getParent(); int nbt = tg.activeCount(); Thread[] tab = new Thread[nbt]; tg.enumerate(tab); for (int j=0; j<nbt; j++) { if ((group != null) && ! tab[j].getThreadGroup().getName().equals(group)) continue; writer.println("+----------------------------------------"); writer.println("[" + ((group==null)?(tab[j].getThreadGroup().getName() + "."):"") + tab[j].getName() + "]" + (tab[j].isAlive()?" alive":"") + (tab[j].isDaemon()?" daemon":"") + "\n " + tab[j]); } } else if (cmd.equals(LIST_MCONS)) { for (Enumeration c=AgentServer.getConsumers(); c.hasMoreElements(); ) { MessageConsumer cons = (MessageConsumer) c.nextElement(); writer.println("+----------------------------------------"); writer.println(cons); } } else if (cmd.equals(START_MCONS)) { String domain = null; if (st.hasMoreTokens()) { // start the identified consumer. domain = st.nextToken(); } for (Enumeration c=AgentServer.getConsumers(); c.hasMoreElements(); ) { MessageConsumer cons = (MessageConsumer) c.nextElement(); if (((domain == null) || domain.equals(cons.getName()))) { try { cons.start(); writer.println("start " + cons.getName() + " done."); } catch (Exception exc) { writer.println("Can't start "+ cons.getName() + ": " + exc.getMessage()); if (debug) exc.printStackTrace(writer); } } } } else if (cmd.equals(STOP_MCONS)) { String domain = null; if (st.hasMoreTokens()) { // stop the identified consumer. domain = st.nextToken(); } for (Enumeration c=AgentServer.getConsumers(); c.hasMoreElements(); ) { MessageConsumer cons = (MessageConsumer) c.nextElement(); if (((domain == null) || domain.equals(cons.getName()))) { cons.stop(); writer.println("stop " + cons.getName() + " done."); } } } else if (cmd.equals(LIST_SERVICE)) { ServiceDesc services[] = ServiceManager.getServices(); for (int i=0; i<services.length; i++ ){ writer.println("+----------------------------------------"); writer.println(services[i].getClassName() + " (" + services[i].getArguments() + ")" + (services[i].isInitialized()?" initialized ":"") + (services[i].isRunning()?" running":"")); } } else if (cmd.equals(ADD_SERVICE)) { try { // Add a new Service String sclass = null; String args = null; try { sclass = st.nextToken(); if (st.hasMoreTokens()) args = st.nextToken(); } catch (NoSuchElementException exc) { throw new Exception("Usage: add <sclass> [<args>]"); } try { ServiceManager.register(sclass, args); writer.println("Service <" + sclass + "> registred."); ServiceManager.start(sclass); writer.println("Service <" + sclass + "> started."); } catch (Exception exc) { // Report the error writer.println("Can't start service: " + exc.getMessage()); if (debug) exc.printStackTrace(writer); } } catch (Exception exc) { writer.println(exc.getMessage()); } } else if (cmd.equals(REMOVE_SERVICE)) { // Remove an existing Service String sclass = null; try { sclass = st.nextToken(); } catch (NoSuchElementException exc) { writer.println("Usage: " + REMOVE_SERVICE + " <sclass> [<args>]"); return; } try { ServiceManager.stop(sclass); writer.println("Service <" + sclass + "> stopped."); } catch (Exception exc) { writer.println("Can't stop service: " + exc.getMessage()); if (debug) exc.printStackTrace(writer); } try { ServiceManager.unregister(sclass); writer.println("Service <" + sclass + "> unregistred."); } catch (Exception exc) { writer.println("Can't unregister service: " + exc.getMessage()); if (debug) exc.printStackTrace(writer); } } else if (cmd.equals(DUMP)) { AgentId id = null; try { id = AgentId.fromString(st.nextToken()); } catch (IllegalArgumentException exc) { writer.println("Usage: " + DUMP + " #x.y.z"); return; } try { writer.println(AgentServer.getEngine().dumpAgent(id)); } catch (Exception exc) { writer.println("Can't launch server: " + exc.getMessage()); if (debug) exc.printStackTrace(writer); } } else if (cmd.equals(NONE)) { } else if (cmd.equals(PING)) { writer.println(AgentServer.getServerId()); } else if (cmd.equals(CONFIG)) { try { A3CMLConfig a3CMLConfig = AgentServer.getConfig(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintWriter out = new PrintWriter(baos); A3CML.toXML(a3CMLConfig, out); out.flush(); baos.flush(); baos.close(); byte[] bytes = baos.toByteArray(); writer.println(new String(bytes)); } catch (Exception exc) { writer.println("Can't load configuration: " + exc.getMessage()); if (debug) exc.printStackTrace(writer); } } else if (cmd.equals(LOG)){ PrintStream oldErr = System.err; try { System.setErr(new PrintStream(socket.getOutputStream())); String topic = st.nextToken(); String level = st.nextToken(); int intLevel; if (level.equals("DEBUG")) { intLevel = org.objectweb.util.monolog.api.BasicLevel.DEBUG; } else if (level.equals("ERROR")) { intLevel = org.objectweb.util.monolog.api.BasicLevel.ERROR; } else if (level.equals("FATAL")) { intLevel = org.objectweb.util.monolog.api.BasicLevel.FATAL; } else if (level.equals("INFO")) { intLevel = org.objectweb.util.monolog.api.BasicLevel.INFO; } else if (level.equals("INHERIT")) { intLevel = org.objectweb.util.monolog.api.BasicLevel.INHERIT; } else if (level.equals("WARN")) { intLevel = org.objectweb.util.monolog.api.BasicLevel.WARN; } else { writer.println("Unknown level: " + level); return; } Debug.setLoggerLevel(topic, intLevel); } catch(Exception exc){ writer.println(exc.getMessage()); } finally{ System.setErr(oldErr); writer.println("OK"); } } else if (cmd.equals(HELP)) { writer.println( "Description of available commands:\n" + "\t" + HELP + "\n\t\tGives the summary of the options.\n" + "\t" + STOP_SERVER + "\n\t\tStops the server.\n" + "\t" + SET_VARIABLE + "variable value" + "\n\t\tSet the specified static variable with the given value.\n" + "\t" + GET_VARIABLE + "\n\t\tReturn the value of the specified static variable.\n" + "\t" + GC + "\n\t\tRun the garbage collector in the specified A3 server.\n" + "\t" + THREADS + " [group]" + "\n\t\tList all threads in server JVM.\n" + "\t" + LIST_MCONS + "\n\t\tList all defined consumers.\n" + "\t" + START_MCONS + " [domain]" + "\n\t\tStarts the specified MessageConsumer.\n" + "\t" + STOP_MCONS + " [domain]" + "\n\t\tStops the specified MessageConsumer.\n" + "\t" + LIST_SERVICE + "\n\t\tList all registered services.\n" + "\t" + ADD_SERVICE + " classname arguments" + "\n\t\tRegisters and starts the specified Service.\n" + "\t" + REMOVE_SERVICE + " classname" + "\n\t\tStops then unregister the specified Service.\n" + "\t" + CONFIG + "\n\t\tReturns the configuration of the server in XML format.\n"); } else { writer.println("unknown command:" + cmd); } } finally { } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -