从Java代码开始和停止Tomcat



基于我在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");
    }
}

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

我也有类似的问题。我在创建套接字时收到"连接:连接"错误消息。

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

我在生产线创建插座之前添加了30秒的睡眠:

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

它开始工作。

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

fyi,我的tomcat作为Windows服务运行。

最新更新