繁体   English   中英

从java代码启动和停止Tomcat

[英]Start and Stop Tomcat from java code

根据我在Stackoverflow和Internet上的其他页面中看到的代码,我创建了一个方法来停止和启动tomcat,此时我将在我的系统中运行一个进程,因为我需要在我的操作系统中清理内存,我使用System.gc()但仍不足以释放内存,这是代码:

全球宣言:

private String server = "localhost";

停止启动tomcat的方法:

public void tomcat(){
    try{
        Socket s = new Socket(server,8005);
        if(s.isConnected()){
            PrintWriter print = new PrintWriter(s.getOutputStream(),true);
            print.println("SHUTDOWN"); /*Command to stop tomcat according to the line "<Server port="8005" shutdown="SHUTDOWN">" in catalina_home/conf/server.xml*/
            print.close();
            s.close();
        }
        Runtime.getRuntime().exec(System.getProperty("catalina.home")+"\\bin\\startup.bat");  /*Instruction to run tomcat after it gets stopped*/
    }catch (Exception ex){
        ex.printStackTrace();
    }
}

启动tomcat的代码行工作得很好,但没有停止它的指令,因为当我实例化套接字时,它给了我以下消息: Connection refused: connect

我怎么解决这个问题? 或者,有没有另一种方法来阻止tomcat?

提前致谢。

public static void shut_server(String lien) 
{
      try {

        Process child = Runtime.getRuntime().exec(lien+"/shutdown.sh");
        System.out.println("Serveur est atteins");
    } catch (IOException ex) {
        Logger.getLogger(Installation.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("erreur de demarrage");
    }
}

lien = tomcat bin文件的路径
例如 - /home/zakaria/Téléchargements/apache-tomcat-8.0.21/bin

我有类似的问题。 我在创建套接字时收到“Connection refused:connect”错误消息。

但是,我的用例与Vlad发布的用例不同。 当Tomcat服务器启动时,我的应用程序正在检查某些资源的可用性,如果不是,则需要关闭服务器。

我在创建套接字的行之前添加了30秒的睡眠:

try {
    Thread.sleep(30000);
}
catch (Exception excp) {}
Socket socket = new Socket("localhost", port);

它开始工作了。

我认为当Tomcat启动时,需要一些时间才能使关闭端口准备就绪。 选择30秒是任意的,它可能更短。

仅供参考,我的Tomcat作为Windows服务运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM