Проблема при перезапуске сервера Tomcat

Я использую apache-tomcat-8.5.15 и начиная (startup.sh) и остановка (shutdown.sh) он использует сценарии оболочки, содержащиеся в его bin/ каталог. В моем собственном файле сценария оболочки, когда я пишу:

./shutdown.sh
./startup.sh

и запустить, кажется, работает нормально. Но когда я бегу с

./shutdown.sh && ./startup.sh

это показывает

java.net.BindException: Address already in use (Bind failed)

говорят, что адрес уже связан.

Почему это происходит? Как я могу устранить эту ошибку?

Или есть простая команда, которая может перезапустить tomcat?

2 ответа

Решение

Почему это происходит? Как я могу устранить эту ошибку?

Вопрос не в том, && или нет. Это была просто ошибка тестирования.

Это было потому что

INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [38,251] milliseconds.

Эта часть съедала почти 40 секунд, так что когда я тестировал скрипт с &&, shutdown.sh не удалось завершить процесс tomcat, так как он находился на стадии инициализации.

Чтобы это исправить, вы можете установить в JAVA_OPT кормить dev/urandom, Обратитесь к этому ответу и комментарию для подробного решения.

На самом деле, без этой проблемы было нормально обойтись в любом случае.


Есть ли простая команда, которая может перезапустить Tomcat?

Возможно нет.


Являются starup.sh а также shutdown.sh работать асинхронно?

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

Почему это происходит? Как я могу устранить эту ошибку?

Эта проблема возникает в основном, когда вы пытаетесь запустить ваш Tomcat на порт, который уже используется другим приложением или другим процессом самого Tomcat,

Да, вы можете решить эту проблему, просто убив или остановив процесс, связанный с этим портом.

Другие вопросы по тегам