我尝试使用startup.bat从我的c#wpf应用程序启动tomcat,在部署war文件之后,我想关闭它。这就是我一直在做的事情,似乎工作正常。
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = Tomcat_DIR_tbox.Text + @"\bin\startup.bat";
proc.StartInfo.WorkingDirectory = Tomcat_DIR_tbox.Text + @"\bin\";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
// do some bla bla
//Close Tomcat
proc.StartInfo.Filename = Tomcat_DIR_tbox.Text + @"\bin\shutdown.bat";
proc.Start();
proc.WaitForExit();
现在我一直在想虽然它有效,但它不太正确?除非我告诉它,Tomcat应用程序启动永远不会停止,使用相同的进程关闭它会感觉不对吗?
我现在所做的就是这样:保持启动tomcat的过程,并创建另一个要求关闭的过程:
//Close tomcat
System.Diagnostics.Process proc_shutdown = new System.Diagnostics.Process();
proc_shutdown.StartInfo.WorkingDirectory = Tomcat_DIR_tbox.Text + @"\bin\";
proc_shutdown.StartInfo.FileName = Tomcat_DIR_tbox.Text + @"\bin\shutdown.bat";
proc_shutdown.StartInfo.CreateNoWindow = true;
proc_shutdown.Start();
proc_shutdown.WaitForExit();
我唯一不喜欢这种方法的是它会带来一条消息,询问我是否允许从我的应用程序调用shutdown.bat,我可以取消选中" Don&#39再次问我这个文件"但我仍然不喜欢它提供的用户体验。
我也尝试直接调用proc.Close()而不是proc.Filename = path_to_shutdown和proc.Start(),但它似乎挂断了我的应用程序而从未关闭tomcat。
那么启动tomcat,做一些事情然后关闭它的最佳方法是什么?谢谢,Razvan。
答案 0 :(得分:0)
根据我的观察,你正在做什么可以从WPF应用程序启动和停止tomcat服务器。但是,如果要隐藏安全警告,请打开Internet Explorer转到工具 - >互联网选项,然后选择"安全"从那里选择选项卡(自定义级别..)..在杂项组中,将有一个名为
的选项"启动应用程序和不安全文件" - >选择启用单选按钮。然后它不会告诉你"允许shutdown.bat"弹出窗口。
希望,这有帮助。