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

📄 httpdebug.java

📁 一个类似于openJMS分布在ObjectWeb之下的JMS消息中间件。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		listServers(cmd.substring(CMD_SERVERS.length()), buf);		if (cmd.substring(CMD_SERVERS.length()).startsWith(CMD_STOP)) {                  AgentServer.stop(false);		}	      } else if (cmd.startsWith(CMD_MSG_CONS)) {		// a list of consumers has been requested		listConsumers(cmd.substring(CMD_MSG_CONS.length()), buf);	      } else if (cmd.startsWith(CMD_SERVICES)) {		// a list of services has been requested		listServices(cmd.substring(CMD_SERVICES.length()), buf);	      } else if (cmd.startsWith(CMD_DUMP_AGENT)) {		// a dump command has been requested		dumpAgent(cmd.substring(CMD_DUMP_AGENT.length()), buf);	      }	    } else if (cmd.equals(CMD_DEBUG_WAIT)) {	      header("A3 AgentServer #" + AgentServer.getServerId());	      writer.println("<H2>Debug Waiting</H2>");	    } else if (cmd.equals(CMD_DEBUG_RUN)) {	      header("A3 AgentServer #" + AgentServer.getServerId());	      writer.println("<H2>Debug Running</H2>");	    } else if (cmd.startsWith(CMD_DEBUG)) {	      // a debug tool has been requested	      header("A3 AgentServer #" + AgentServer.getServerId() +		     " Debug Tool");	      debug(cmd.substring(CMD_DEBUG.length()), buf);	    } else if (cmd.startsWith(CMD_CLASS)) {	      loadClass(cmd.substring(CMD_CLASS.length()));	    } else if (cmd.startsWith(CMD_THREADS)) {	      // a list of threads has been requested	      header("A3 AgentServer #" + AgentServer.getServerId());	      menu();	      listThread(cmd.substring(CMD_THREADS.length()), buf);	    } else {	      unknown(cmd);	    }	    writer.println(buf.toString());	  } catch (Exception exc) {	    error(exc);	  }	  footer();	}      } catch(IOException exc) {        logmon.log(BasicLevel.WARN,                   getName() + ", error in \"" + cmd + "\"", exc);      } finally {      }    }    /**     * List all active threads in current ThreadGroup     */    void listThread(String cmd, StringBuffer buf) {      String group = null;      if ((cmd.length() > 1) && (cmd.charAt(0) == '/'))	group = cmd.substring(1);      ThreadGroup tg = Thread.currentThread().getThreadGroup();      while (tg.getParent() != null)	tg = tg.getParent();      int nbt = tg.activeCount();      Thread[] tab = new Thread[nbt];      nbt = tg.enumerate(tab);      buf.append("<H2>List of threads</H2>\n");      buf.append("<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0 WIDTH=\"100%\">\n");      for (int j=0; j<nbt; j++) {        if (tab[j] == null) continue;	if ((group != null) &&	    ! tab[j].getThreadGroup().getName().equals(group))	  continue;	buf.append("<TR><TD CLASS=FONT2><PRE>\n");	buf.append("name=").append(tab[j].getName()).append("\n")	  .append("group=").append(tab[j].getThreadGroup().getName()).append("\n")	  .append("isAlive=").append(tab[j].isAlive()).append("\n")	  .append("isDaemon=").append(tab[j].isDaemon()).append("\n");	buf.append("</PRE></TD></TR>\n");	buf.append("");      }      buf.append("</TABLE>");      return;    }      /**     * List all agents deployed on the current server     */    void listAgents(StringBuffer buf) {      buf.append("<H2>List of agents</H2>\n");      buf.append("<PRE>\n");      buf.append("now=" + AgentServer.engine.now + "\n");      buf.append("NumberAgents=" + AgentServer.engine.agents.size() + "\n");      buf.append("NbMaxAgents=" + AgentServer.engine.NbMaxAgents + "\n");      buf.append("</PRE>\n");      buf.append("<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0 WIDTH=\"100%\">\n");      AgentId list[] = AgentServer.engine.getLoadedAgentIdlist();      for (int i=0; i<list.length; i++) {	Agent agent = (Agent) AgentServer.engine.agents.get(list[i]);	buf.append("<TR>\n");	buf.append("<TD CLASS=FONT1 WIDTH=\"20%\"><CENTER>\n");	if (agent != null) {	  buf.append(urlAgent(list[i]) + "\n");	} else {	  buf.append(list[i] + "\n");	}	buf.append("</CENTER></TD>\n");	buf.append("<TD WIDTH=\"80%\"><PRE>\n");	if (agent != null) {	  buf.append("name=" + agent.name + "\n\n");	  buf.append("\tclass=" + agent.getClass().getName() + "\n\n");	  buf.append("fixed=" + agent.fixed + "\n");	  buf.append("last=" + agent.last + "\n");	}	buf.append("</PRE></TD>\n");	buf.append("</TR>\n");      }      buf.append("</TABLE>");      return;    }    String urlServer(short serverId) {      if (serverId == AgentServer.getServerId())	return base;      try {        ServerDesc desc = AgentServer.getServerDesc(serverId);	int port = Integer.parseInt(	  AgentServer.getServiceArgs(desc.sid,				     "fr.dyade.aaa.agent.HttpDebug"));        if (desc.getHostname().equals("localhost"))          return new String("http://" +                            InetAddress.getLocalHost().getHostName() +                            ":" + port);        else          return new String("http://" + desc.getHostname() + ":" + port);      } catch (Exception exc) {}      return null;    }    String urlAgent(AgentId id) {      String url = urlServer(id.getTo());      if (url == null)	return id.toString();      return new String("<A href=\"" + urlServer(id.getTo()) +			CMD_DUMP_AGENT + "/" +			id.toString().substring(1) + "\">" +			id + "</A>");    }    /**     * List all servers.     */    void listServers(String cmd, StringBuffer buf) {      buf.append("<H2>List of servers</H2>\n");      buf.append("<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0 WIDTH=\"100%\">\n");      for (short i=0; i<AgentServer.getServerNb(); i++ ) {	int port = -1;	ServerDesc desc = null;        try {          desc = (ServerDesc) AgentServer.getServerDesc(i);        } catch (Exception exc) {          desc = null;        }        if (desc == null) continue;	buf.append("<TR>\n");	buf.append("<TD CLASS=FONT1 WIDTH=\"20%\" VALIGN=TOP>\n");	String url = urlServer(desc.sid);	if ((url != null) && (i == AgentServer.getServerId()) &&	    (cmd.startsWith(CMD_STOP))) {	  // The server will be stopped, prevent all new request.	  url = null;	}	if (url != null) {	  buf.append("<A href=\"" + url + CMD_SERVERS + "\">Server #" + desc.sid + "</A>\n");	  buf.append("<BLOCKQUOTE><FONT CLASS=FONT3>\n");	  buf.append("<P><A href=\"" + url + CMD_AGENTS + "\">Agents</A>\n");	  buf.append("<P><A href=\"" + url + CMD_MSG_CONS + "\">Messages Consumers</A>\n");	  buf.append("<P><A href=\"" + url + CMD_SERVICES + "\">Services</A>\n");	  buf.append("</FONT></BLOCKQUOTE>\n");	} else {	  buf.append("Server #" + desc.sid + "\n");	}	buf.append("</TD>\n" +		   "<TD WIDTH=\"80%\" VALIGN=TOP>\n");		if (url != null) {	  buf.append("<BLOCKQUOTE><FORM ACTION=\"" +		     url + CMD_SERVERS + CMD_STOP + 		     "\" METHOD=\"GET\">\n" +		     "<INPUT TYPE=\"submit\" VALUE=\"STOP\" NAME=\"A\">\n" +		     "</FORM></BLOCKQUOTE>\n");	}	buf.append("<PRE><CODE>\n" +		   "name=" + desc.name + "\n");// 	buf.append("isTransient=" + desc.isTransient + "\n");	if (desc.gateway == desc.sid) {	  buf.append("domain=<A href=\"" + base + CMD_MSG_CONS +		     "/" + desc.domain.getName() + "\">" +		     desc.domain.getName() + "</A>\n");	  buf.append("hostname=" + desc.getHostname() + "\n");	  buf.append("port=" + desc.getPort() + "\n");	  if (desc.active) {	    buf.append("active=" + desc.active + "\n");	  } else {	    buf.append("last=" + desc.last + "\n");	    buf.append("retry=" + desc.retry);	  }	} else {	  buf.append("gateway=#" + desc.gateway + "\n");	}	buf.append("</CODE></PRE></TD>\n");	buf.append("</TR>\n");      }      buf.append("</TABLE>");      return;    }//     int getArg(String cmd) {//       if (cmd.charAt(0) != '+')// 	return -1;//       int i = 1;//       for (; i < cmd.length();i += 1) {// 	if ((cmd.charAt(i) < '0') || (cmd.charAt(i) > '9'))// 	  break;//       }//       try {// 	if (i > 1)// 	  return Integer.parseInt(cmd.substring(1, i));//       } catch (Exception exc) {// 	// Can never happened//       }//       return -1;//     }    /**     *      */    void listConsumers(String cmd, StringBuffer buf) {      String msgConsId = null;      int sub = -1;      if (cmd.startsWith(CMD_QUEUE)) {	sub = 0;	msgConsId = cmd.substring(CMD_QUEUE.length() +1);      } else if (cmd.startsWith(CMD_START)) {	sub = 1;	msgConsId = cmd.substring(CMD_START.length() +1);      } else if (cmd.startsWith(CMD_STOP)) {	sub = 2;	msgConsId = cmd.substring(CMD_STOP.length() +1);      }      buf.append("<H2>List of messages consumers</H2>\n");      buf.append("<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"0\" WIDTH=\"100%\">\n");      for (Enumeration c=AgentServer.getConsumers(); c.hasMoreElements(); ) {	MessageConsumer cons = (MessageConsumer) c.nextElement();	buf.append("<TR>\n" +		   "<TD CLASS=FONT1 VALIGN=\"TOP\" WIDTH=\"20%\">\n" +		   "<CENTER>").append(cons.getName()).append("</CENTER>\n");	buf.append("</TD>\n");	buf.append("<TD WIDTH=\"80%\">");	buf.append("<TABLE BORDER=\"1\" WIDTH=\"100%\"><TR><TD COLSPAN=\"3\">");		if (msgConsId.equals(cons.getName())) {	  if (sub == 1) {	    try {	      cons.start();	    } catch (Exception exc) {	      buf.append("<TR><TD COLSPAN=\"3\"><PRE WIDTH=\"80\">");	      buf.append(exc.toString()).append(" during starting.\n");	      buf.append("</PRE></TD></TR>");	    }	  } else if (sub == 2) {	      cons.stop();	  }	}	buf.append(cons.getClass().getName());	if (cons.isRunning()) {	  buf.append(" is running.");	} else {	  buf.append(" is stopped.");	}	buf.append("</TD></TR><TR>");	buf.append("<TD CLASS=FONT1 ALIGN=\"CENTER\" BGCOLOR=\"#3366FF\"><A href=\"")	  .append(base).append(CMD_MSG_CONS)          .append(CMD_STOP + "+").append(cons.getName())	  .append("\">STOP</A>\n")	  .append("</TD>");	buf.append("<TD CLASS=FONT1 ALIGN=\"CENTER\" BGCOLOR=\"#3366FF\"><A href=\"")	  .append(base).append(CMD_MSG_CONS)          .append(CMD_START + "+").append(cons.getName())	  .append("\">START</A>\n")	  .append("</TD>");	buf.append("<TD CLASS=FONT1 ALIGN=\"CENTER\" BGCOLOR=\"#3366FF\"><A href=\"")	  .append(base).append(CMD_MSG_CONS)          .append(CMD_QUEUE + "+").append(cons.getName())	  .append("\">QUEUE</A>\n")	  .append("</TD>");	buf.append("</TR><TR><TD COLSPAN=\"3\">");	buf.append("<PRE WIDTH=\"80\">\n");	buf.append(cons.toString());	buf.append("</PRE>");	buf.append("</TD></TR>");		if ((msgConsId.equals(cons.getName())) && (sub == 0) && (cons.getQueue().size() > 0)) {	  buf.append("<TR><TD COLSPAN=\"3\"><PRE WIDTH=\"80\">");	  dumpQueue(buf, cons.getQueue().toString().toCharArray());	  buf.append("</PRE></TD></TR>");	}	buf.append("</TABLE>");	buf.append("</TD>");	buf.append("</TR>\n");      }      buf.append("</TABLE>");      return;    }    void dumpQueue(StringBuffer buf,  char dump[]) {      int j;      AgentId id;      try {	int idx = 0;	if (dump[idx++] != '(') throw new IllegalArgumentException();	while (true) {	  try {	    if (dump[idx++] != '(') throw new IllegalArgumentException();	    // get "from="	    while (dump[idx] != '=') buf.append(dump[idx++]);	    buf.append(dump[idx++]);	    // Get AgentId	    if (dump[idx] != '#') throw new IllegalArgumentException();	    id = null;	    j = dumpAgentId(dump, idx);	    if (j != -1)	      id = AgentId.fromString(new String(dump, idx, j-idx));	    if (id == null)	      throw new IllegalArgumentException();	    // The rigth URL	    buf.append(urlAgent(id));	    idx = j;	    // get ",to="	    while (dump[idx] != '=') buf.append(dump[idx++]);	    buf.append(dump[idx++]);	    // Get AgentId	    if (dump[idx] != '#') throw new IllegalArgumentException();	    id = null;	    j = dumpAgentId(dump, idx);	    if (j != -1)	      id = AgentId.fromString(new String(dump, idx, j-idx));	    if (id == null)	      throw new IllegalArgumentException();	    // The rigth URL	    buf.append(urlAgent(id));	    idx = j;	    // get ",not="	    if (dump[idx] == ',')	      buf.append('\n');	    else	      throw new IllegalArgumentException();	    idx++;	    while (dump[idx] != '=') buf.append(dump[idx++]);	    buf.append(dump[idx++]);	    // Copy notification with AgentId transformation	    if (dump[idx++] != '[') throw new IllegalArgumentException();	    while (dump[idx] != ']') {	      if (dump[idx] == '#') {		id = null;		j = dumpAgentId(dump, idx);		if (j != -1)		  id = AgentId.fromString(new String(dump, idx, j-idx));		if (id != null) {

⌨️ 快捷键说明

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