meaning - tomcat truss
Apache Tomcat: java.net.ConnectException: conexión rechazada (9)
¿Estaba el Tomcat ejecutándose antes de reiniciarlo? ¿Había alguna otra aplicación escuchando en este puerto?
La excepción se produce porque no había nadie escuchando en el puerto de comando (consulte <Server port="..."
en $tomcat_home/conf/server.xml
).
mientras trato de detener el servidor tomcat, da un error como este.
[root@server 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
¿Alguien puede ayudarme a solucionar este problema?
Dependiendo de su versión de Tomcat, este podría ser un problema simple (error) con un archivo de registro de 0 bytes. Eche un vistazo a /var/log/tomcatX.Y
donde XY es su versión con la que está trabajando y verifique si el archivo de registro catalina.out
es de lectura y escritura. Si tiene 0 bytes y no es accesible, simplemente elimínelo y reinicie Tomcat. Esto ya nos solucionó el problema algunas veces.
El significado de esta excepción se explica aquí: https://bz.apache.org/bugzilla/show_bug.cgi?id=27829
Resumen: Java muere, se llama Tomcat shut down hook, se lanza una excepción.
Entonces, si un firewall impide que el mensaje de apagado llegue a Tomcat, Java finalmente morirá primero (por ejemplo, durante el reinicio / apagado del sistema) y aparecerá la excepción.
Hay otras posibilidades
En mi caso, mi problema tenía algo que ver con la instalación incorrecta de mi script de inicio (Linux). Eso implicaba que Java estaba siendo asesinado por el sistema operativo durante el apagado / reinicio y no como resultado del script. La solución es tan simple como esto:
chkconfig --del initscript
chkconfig --add initscript
Antes de la corrección, tenía lo siguiente en 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
Después de la corrección:
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
Conclusión: si obtiene esta excepción, asegúrese de que Tomcat se cierre correctamente, no como resultado de la finalización de Java. Compruebe su firewall, secuencias de comandos de cierre, etc.
Hay una explicación más para este problema de conexión rechazada, que omití de las respuestas anteriores. En mi caso, tenía un hilo ejecutándose (programador de cuarzo) iniciado desde el receptor de contexto (en contextInitialized
), nunca se detuvo (como en el contextDestroyed
).
Esto a su vez provocó que el puerto del servidor asociado se cerrara, mientras que el contenedor seguía funcionando (por lo tanto, la conexión se rechazó en el puerto del servidor).
Lo arreglé deteniendo el cuarzo en el contextDestroyed
y no experimenté este problema desde entonces.
Vea aquí para problemas similares: Tomcat no se detiene. ¿Cómo puedo depurar esto?
He visto muchas respuestas inadecuadas al tratar de resolver esto. La respuesta general ha sido "estás tratando de detener algo que no ha comenzado" o "algún otro programa se está ejecutando en el puerto que necesitas".
El problema para mí resultó ser mi firewall. Ni siquiera había considerado esto, pero el puerto 8005 (el puerto utilizado para el apagado, gracias mindas), estaba bloqueado. Lo cambié, y ahora, no más error. Buena suerte.
No estoy seguro de si su problema fue resuelto y cómo. Pero me enfrenté al mismo problema al intentar ejecutar una instancia de tomcat.
- El puerto no estaba en uso.
- No hubo problema con el firewall
- La instancia de Tomcat estaba comenzando bien.
Cambié el script de apagado personalizado y este problema se solucionó. Guión antiguo: -
exportar CATALINA_HOME = / home / lrsprod / ELA / tomcat6 / apache-tomcat-6.0.35 $ CATALINA_HOME / bin / catalina.sh stop
Se agregó catalina base para ello.
exportar 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
Eso hizo el truco.
Otra posible causa raíz es que tu gato aún no ha comenzado completamente.
Si haces un ps -ef| grep apache
ps -ef| grep apache
, vería el servidor ejecutándose y si marca catalina.out
, mostrará que el servidor se inicializó en 123ms, pero aún podría estar implementando las aplicaciones en su directorio webapps.
También me enfrenté a este problema. Puedes probar cualquiera de estos pasos:
- Intenta matar ese proceso
- Compruebe si se está ejecutando otra instancia de tomcat en su máquina o no. (uso:
ps -A
)
puedes intentar parar y comenzar de nuevo con:
$ cd /path/apache-tomcat x.x.x/bin
entonces
$ sh shutdown.sh
cuando haya realizado con éxito el último paso debe encender su tomcat y catalina con el comando
$ sh startup.sh
Logré resolver mi problema de esta manera