Невозможно запустить сервер после жесткого закрытия Eclipse (сервер Tomcat уже запущен) - PullRequest
1 голос
/ 13 июня 2019

Я работаю с огромными репозиториями, связанными с моим Java-проектом (работающим на Eclipse), и иногда (когда я обычно выполняю текстовый поиск) мой Eclipse перестает работать.

Если я "сильно закрываю" его в этом состоянии и если у меня запущен Tomcat, проблема в том, что он не остановит tomcat перед выходом.

Когда я снова запускаю Eclipse, он покажет мне, что Tomcat остановлен (это не потому, что он не остановил tomcat, когда я жестко закрыл Eclipse), и если я попытаюсь запустить его снова, у меня появится следующая ошибка:

Tomcat error

Единственный способ перезапустить компьютер - перезагрузить компьютер .. Я признаю, что это немного раздражает ..

Знаете ли вы, если есть способ остановить мой "фантомный" сервер Tomcat в Eclipse, или мне нужно перезагружать компьютер каждый раз, когда это происходит? (У меня нет прав администратора на моем компьютере, я не могу использовать диспетчер задач для завершения процесса)

Большое спасибо

1 Ответ

1 голос
/ 13 июня 2019

Стандартный механизм остановки tomcat - отправка команды отключения на порт отключения.Обычно порт отключения - 8005. Вы можете остановить сервер, отправив команду вручную:

  • В Linux (только для полноты): echo "SHUTDOWN" | nc -w 2 127.0.01 8005
  • В Windows:
    1. telnet 127.0.0.1 8005
    2. type SHUTDOWN

Если у вас нет доступа к этим командам, вы можете написать простое приложение наJava:

   public static void main(String[] args) throws IOException {
        final InetSocketAddress shutdownAddress = new InetSocketAddress(Inet4Address.getLoopbackAddress(), 8005);
        try (Socket socket = new Socket()) {
            socket.connect(shutdownAddress);

            try (OutputStream out = socket.getOutputStream()) {
                out.write("SHUTDOWN".getBytes(StandardCharsets.US_ASCII));
            }
        }
    }

PS: На Linux вы также можете отправить сигнал SIG_INT: kill -2 <PID>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...