Проблема при перезапуске сервера 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,
Да, вы можете решить эту проблему, просто убив или остановив процесс, связанный с этим портом.