【发布时间】:2011-03-10 05:50:24
【问题描述】:
如何使用java代码启动和停止tomcat?
【问题讨论】:
如何使用java代码启动和停止tomcat?
【问题讨论】:
您可以向关闭端口发送关闭命令,这两个端口都可以在Tomcat的server.xml文件的根元素中配置。
按步骤:
第 1 步
如下配置CATALINA_HOME/conf/server.xml:
<Server port="8005" shutdown="myShutDownCommand">
属性端口是可选的。如果省略,则使用默认值 8005。
shutdown 属性的值可以是任何值。这不应该被其他人知道。
第 2 步
使java程序使用java.net.Socket类发送关机命令myShutDownCommand到关机端口8005。
try {
Socket socket = new Socket("localhost", 8005);
if (socket.isConnected()) {
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
pw.println("myShutDownCommand");//send shut down command
pw.close();
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
【讨论】:
需要执行org.apache.catalina.startup.Bootstrap的main方法,参数"start"。
你还需要以下东西:
tomcat/bin/bootstrap.jar;-Dcatalina.base 指向$TOMCAT_HOME
-Dcatalina.home 指向$TOMCAT_HOME
-Djava.io.tmpdir 指向一个临时目录(通常是$TOMCAT_HOME/temp)我也有-noverify参数集,不确定是否总是需要。
附言如果您可以开始接受答案也很好,您当前的费率为 0/28。
【讨论】:
-noverify 在类加载期间禁用检查。当您以安全为代价拥有庞大的 Web 应用程序时,它可以让 Tomcat 启动得更快。
Bootstrap 类具有 main(String[] args) 方法,并且必须将 start 参数传递给此 String 数组。通常这是通过你必须模仿的 shell 脚本来完成的。
您可以使用 java 执行本机命令
String command = "c:\program files\tomcat\bin\startup.bat";//for linux use .sh
Process child = Runtime.getRuntime().exec(command);
【讨论】:
CATALINA_HOME了吗?
File file = new File("path to tomcat bin"); Process p = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/C", "start" ,"path to startup.bat", "start"}, null, file); 这段代码终于成功了
启动(和停止)嵌入式 Tomcat。如何做到这一点有很好的记录,例如here。
【讨论】:
对于使用 java 的 Linux 用户,试试这个:
Runtime run = Runtime.getRuntime();
Process pr = run.exec("sh startup.sh", null, new File("filePath"));
filePathexample = /home/example/apache-tomcat-8.0.47/bin/
【讨论】: