2011-04-18 24 views
26

mientras trato de detener el servidor tomcat dando un error como este.Apache Tomcat: java.net.ConnectException: Connection se negó

[[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 

¿Alguien me puede ayudar a solucionar este problema?

+0

Puede suceder si intenta apagarlo inmediatamente después de iniciarlo. Lleva tiempo arrancar completamente el servidor. Intente verificar el proceso en curso o visite la URL del servidor. – amertkara

Respuesta

5

¿Estaba el Tomcat funcionando 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 comandos (consulte <Server port="..." en $tomcat_home/conf/server.xml).

26

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.

+0

¡El mismo problema de puerto aquí! ¡Gracias! – Maitreya

1

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ó. Antiguo Guión: -

CATALINA_HOME exportación =/home/lrsprod/ELA/tomcat6/apache-tomcat-6.0.35 $ CATALINA_HOME/bin/catalina.sh detener

base de catalina Agregado a eso.

CATALINA_BASE exportación =/home/lrsprod/ELA/tomcat6/ela_instance CATALINA_HOME exportación =/home/lrsprod/ELA/tomcat6/apache-tomcat-6.0.35 $ CATALINA_HOME/bin/catalina.sh detener

Eso hizo el truco.

0

También me enfrenté a este problema. Puede probar cualquiera de estos pasos:

4

Dependiendo de la versión de Tomcat, esto podría ser un problema simple (bug) con un archivo de registro de 0 bytes. Eche un vistazo al /var/log/tomcatX.Y donde X.Y 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.

1

se puede tratar de detener e iniciar de nuevo con:

$ cd /path/apache-tomcat x.x.x/bin 

continuación

$ sh shutdown.sh 

cuando se realiza con éxito el último paso que debe encender el Tomcat y catalina con el comando

$ sh startup.sh 

Me las arreglé para resolver mi problema de esta manera

-1

Otra posible causa raíz es que su gato aún no ha comenzado completamente.

Si hace un ps -ef| grep apache, verá el servidor ejecutándose y si marca el catalina.out, mostrará que el servidor se inicializó en 123ms, pero podría seguir desplegando las aplicaciones en su directorio webapps.

0

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 en ejecución (programador de cuarzo) iniciado desde el oyente de contexto (en contextInitialized), que nunca debe detenerse (como en contextDestroyed).

Esto a su vez ocasionó que el puerto del servidor asociado se cerrara, mientras que el contenedor seguía funcionando (por lo tanto: conexión rechazada en el puerto del servidor).

Lo arreglé deteniendo el cuarzo en contextDestroyed y no he experimentado este problema desde entonces.

ver aquí para problemas similares: Tomcat doesn't stop. How can I debug this?

1

El significado de esta excepción se explica aquí: https://bz.apache.org/bugzilla/show_bug.cgi?id=27829

Resumen: Java muere, Tomcat cerró gancho se llama, 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 initscript (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 tan simple como esto:

chkconfig --del initscript 
chkconfig --add initscript 

Antes de que la solución que tenía la 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 revisió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 recibe esta excepción, asegúrese de que Tomcat se cierre correctamente, no como resultado de la terminación de Java. Compruebe su firewall, secuencias de comandos de apagado, etc.

Cuestiones relacionadas