Apache Tomcat: java.net.ConnectException: соединение отклонено
в то время как я пытаюсь остановить сервер tomcat, выдавая ошибку, подобную этой.
[[email protected] classes]# service tomcat restart
Stopping Tomcat service: Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Apr 17, 2011 10:11:53 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:381)
at java.net.Socket.connect(Socket.java:537)
at java.net.Socket.connect(Socket.java:487)
at java.net.Socket.<init>(Socket.java:384)
at java.net.Socket.<init>(Socket.java:198)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:421)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:337)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)
[ OK ]
Starting Tomcat service: Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Может ли кто-нибудь помочь мне исправить эту проблему?
Ответы
Ответ 1
Я видел много неадекватных ответов, пытаясь понять это. Общий ответ: "вы пытаетесь остановить что-то, что не запускалось" или "какая-то другая программа работает на нужном вам порту".
Проблема для меня оказалась моей брандмауэром. Я даже не подумал об этом, но порт 8005 (порт, используемый для выключения, спасибо ума) был заблокирован. Я изменил его, и теперь больше нет ошибок. Удачи.
Ответ 2
Был ли запуск Tomcat до перезагрузки? Было ли в этом порту прослушивание другого приложения?
Исключение выбрано потому, что в командном порту никто не слушал (см. <Server port="..."
в $tomcat_home/conf/server.xml
).
Ответ 3
В зависимости от вашей версии Tomcat это может быть простая проблема (ошибка) с 0-байтным файлом журнала. Взгляните на /var/log/tomcatX.Y
, где X.Y - это ваша версия, с которой вы работаете, и проверьте, доступен ли файл журнала catalina.out
для чтения и записи. Если он имеет 0 байт и недоступен, просто удалите его и запустите Tomcat. Это разрешило проблему для нас несколько раз уже.
Ответ 4
Не уверен, была ли исправлена ваша проблема и как. Но я столкнулся с такой же проблемой, пытаясь запустить экземпляр tomcat.
- Порт не использовался.
- Не было проблем с брандмауэром.
- Экземпляр Tomcat запускался нормально.
Я изменил пользовательское завершение script, и эта проблема была исправлена.
Старый Script: -
export CATALINA_HOME =/home/lrsprod/ELA/tomcat6/apache-tomcat-6.0.35 $ CATALINA_HOME/bin/catalina.sh stop
Добавлена база каталины.
export CATALINA_BASE =/home/lrsprod/ELA/tomcat6/ela_instance export CATALINA_HOME =/home/lrsprod/ELA/tomcat6/apache-tomcat-6.0.35 $CATALINA_HOME/bin/catalina.sh stop
Это сделал трюк.
Ответ 5
вы можете попытаться остановить и начать заново:
$ cd /path/apache-tomcat x.x.x/bin
то
$ sh shutdown.sh
когда вы успешно сделали последний шаг, вы должны включить tomcat и catalina с командой
$ sh startup.sh
Мне удалось решить эту проблему таким образом
Ответ 6
Смысл этого исключения объясняется здесь:
https://bz.apache.org/bugzilla/show_bug.cgi?id=27829
Сводка: Java умирает, вызывается Tomcat shut down hook, исключение.
Итак, если брандмауэр не позволяет сообщению завершения работы с Tomcat, Java в конечном итоге умрет первым (ex во время перезагрузки системы/завершения работы), и появится исключение.
Существуют и другие возможности.
В моем случае моя проблема была связана с неправильной установкой моего initscript (Linux). Это означало, что Java была убита ОС во время выключения/перезагрузки, а не в результате script. Решение так просто:
chkconfig --del initscript
chkconfig --add initscript
До исправления у меня было следующее в rc.d:
find /etc/rc.d | grep initscript | sort
/etc/rc.d/init.d/initscript
/etc/rc.d/rc2.d/S85initscript
/etc/rc.d/rc3.d/S85initscript
/etc/rc.d/rc4.d/S85initscript
/etc/rc.d/rc5.d/S85initscript
После исправления:
find /etc/rc.d | grep initscript | sort
/etc/rc.d/init.d/initscript
/etc/rc.d/rc0.d/K15initscript
/etc/rc.d/rc1.d/K15initscript
/etc/rc.d/rc2.d/K15initscript
/etc/rc.d/rc3.d/K15initscript
/etc/rc.d/rc4.d/K15initscript
/etc/rc.d/rc5.d/S85initscript
/etc/rc.d/rc6.d/K15initscript
Заключение: если вы получаете это исключение, убедитесь, что Tomcat выключен правильно, а не в результате завершения Java. Проверьте свои брандмауэры, сценарии завершения работы и т.д.
Ответ 7
Я также столкнулся с этой проблемой.
Вы можете попробовать любой из следующих шагов:
Ответ 8
Есть еще одно объяснение этой проблемы с соединением, которое я пропустил из ответов выше. В моем случае я запускал поток (кварцевый планировщик), начиная с контекстного прослушивателя (в contextInitialized
), никогда не останавливаясь (например, в contextDestroyed
).
Это, в свою очередь, заставило связанный порт сервера быть закрытым, когда контейнер продолжал работать (отсюда: соединение было отказано на порте сервера).
Я зафиксировал его остановку кварца в contextDestroyed
, и с тех пор я не сталкивался с этой проблемой.
См. здесь похожие вопросы: Tomcat не останавливается. Как я могу отладить это?
Ответ 9
Другая возможная причина заключается в том, что ваш tomcat еще не полностью запущен.
Если вы выполните ps -ef| grep apache
, вы увидите, что сервер работает, и если вы проверите catalina.out
, он покажет, что сервер был инициализирован в 123 мс, но он все равно может развертывать приложения в вашем каталоге webapps.