Основанный на коде, который я видел в Stackoverflow и других страницах в Интернете, я создал метод остановки и запуска tomcat в настоящий момент, когда я запустил процесс в своей системе, потому что мне нужно чтобы очистить память в моей ОС, я использую System.gc()
, но все еще не достаточно, чтобы освободить память, это код:Запуск и остановка Tomcat из java-кода
Глобальная декларация:
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?
Заранее спасибо.
Звучит как проблема брандмауэра – MadProgrammer
, если вы запустите 'netstat', можете ли вы увидеть, что 8005 открыт? –
@ user2310289 Я запустил 'netstat -a', чтобы увидеть, был ли порт уже открыт, но ничего, даже когда я запускал приложение, результаты были одинаковыми. @MadProgrammer Я добавил порт в качестве TCP в брандмауэре, но у меня все еще такая же проблема. Даже я перезапускаю свой компьютер, чтобы проверить, были ли применены изменения. – Vlad