public void LoadProjectList() { ThreadPool.QueueUserWorkItem((a) => { List <JObject> itemList = new List <JObject>(); // 1、获取webapps下的项目 ArrayList files = (ArrayList)monitorForm.RunSftpShell(string.Format("ls {0}webapps/", l_tomcat_path.Text), false, false); if (files != null) { string dirname = ""; JObject json = null; Object obj = null; for (int ii = 0; ii < files.Count; ii++) { obj = files[ii]; if (obj is ChannelSftp.LsEntry) { dirname = ((ChannelSftp.LsEntry)obj).getFilename(); if (dirname.IndexOf(".") == -1 && dirname.IndexOf(":") == -1) { json = new JObject(); json.Add("name", dirname); json.Add("url", l_visit_url.Text + (dirname == "ROOT" ? "" : "/" + dirname)); json.Add("path", l_tomcat_path.Text + "webapps/" + dirname); itemList.Add(json); } } } } // 2、获取server.xml中的映射配置 List <JObject> itemList2 = loadTomcatServerProject(); foreach (JObject p in itemList2) { itemList.Add(p); } // 渲染列表 this.BeginInvoke((MethodInvoker) delegate() { projects.Items.Clear(); ListViewItem item = null; ListViewItem.ListViewSubItem subItem = null; foreach (JObject pro in itemList) { item = new ListViewItem(); item.Tag = pro; item.Name = pro["name"].ToString(); item.Text = pro["url"].ToString(); subItem = new ListViewItem.ListViewSubItem(); subItem.Text = pro["path"].ToString(); item.SubItems.Add(subItem); projects.Items.Add(item); } }); }); }
void Tomcat_TextChanged(object sender, EventArgs e) { string path = stb_tomcat_path.Text; if (!string.IsNullOrWhiteSpace(path)) { if (string.IsNullOrWhiteSpace(tomcat_name)) { try { stb_tomcat_name.Text = path.Substring(path.LastIndexOf("/") + 1); } catch { } } if (string.IsNullOrWhiteSpace(stb_tomcat_port.Text)) { try { if (get_tomcat_port_run) { return; } get_tomcat_port_run = true; if (!path.EndsWith("/")) { path += "/"; } string serverxml = path + "conf/server.xml"; string targetxml = MainForm.TEMP_DIR + string.Format("server-{0}.xml", DateTime.Now.ToString("MMddHHmmss")); targetxml = targetxml.Replace("\\", "/"); parentForm.RunSftpShell(string.Format("get {0} {1}", serverxml, targetxml), false, false); ThreadPool.QueueUserWorkItem((a) => { Thread.Sleep(500); List <Hashtable> list = YSTools.YSXml.readXml(targetxml, "Server"); if (list != null && list.Count > 0) { List <Hashtable> serviceList = null; string port = null; foreach (Hashtable one in list) { if (one["NodeName"].ToString() == "Service") { serviceList = (List <Hashtable>)one["ChildList"]; foreach (Hashtable two in serviceList) { if (two["NodeName"].ToString() == "Connector") { port = two["port"].ToString(); break; } } if (port != null) { break; } } } stb_tomcat_port.BeginInvoke((MethodInvoker) delegate() { stb_tomcat_port.Text = port == null ? "8080" : port; }); } get_tomcat_port_run = false; File.Delete(targetxml); }); } catch { } } } }