web-dev-qa-db-fra.com

Tomcat au démarrage, adresse 8080 déjà utilisée

La configuration est:

  • Amazon EC2
  • Tomcat (avec transfert sécurisé à 8443)
  • Apache 2.2

Je lance le shutdown.sh, et je n’obtiens aucune erreur.

MAIS quand j'essaye de lancer le startup.sh, j'obtiens cette erreur:

07-Nov-2011 17:40:40 org.Apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the Java.library.path: /usr/lib/jvm/Java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client:/usr/lib/jvm/Java-1.6.0-openjdk-1.6.0.0/jre/lib/i386:/usr/lib/jvm/Java-1.6.0-openjdk-1.6.0.0/jre/../lib/i386:/usr/Java/packages/lib/i386:/lib:/usr/lib
07-Nov-2011 17:40:41 org.Apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:40:41 org.Apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
Java.net.BindException: Address already in use <null>:8080
        at org.Apache.Tomcat.util.net.JIoEndpoint.init(JIoEndpoint.Java:549)
        at org.Apache.coyote.http11.Http11Protocol.init(Http11Protocol.Java:176)
        at org.Apache.catalina.connector.Connector.initialize(Connector.Java:1022)
        at org.Apache.catalina.core.StandardService.initialize(StandardService.Java:703)
        at org.Apache.catalina.core.StandardServer.initialize(StandardServer.Java:838)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:538)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:562)
        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.load(Bootstrap.Java:261)
        at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:413)
Caused by: Java.net.BindException: Address already in use
        at Java.net.PlainSocketImpl.socketBind(Native Method)
        at Java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.Java:336)
        at Java.net.ServerSocket.bind(ServerSocket.Java:336)
        at Java.net.ServerSocket.<init>(ServerSocket.Java:202)
        at Java.net.ServerSocket.<init>(ServerSocket.Java:158)
        at org.Apache.Tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.Java:50)
        at org.Apache.Tomcat.util.net.JIoEndpoint.init(JIoEndpoint.Java:538)
        ... 12 more
07-Nov-2011 17:40:41 org.Apache.catalina.core.StandardService initialize
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8080]]
LifecycleException:  Protocol handler initialization failed: Java.net.BindException: Address already in use <null>:8080
        at org.Apache.catalina.connector.Connector.initialize(Connector.Java:1024)
        at org.Apache.catalina.core.StandardService.initialize(StandardService.Java:703)
        at org.Apache.catalina.core.StandardServer.initialize(StandardServer.Java:838)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:538)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:562)
        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.load(Bootstrap.Java:261)
        at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:413)
07-Nov-2011 17:40:41 org.Apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:40:41 org.Apache.catalina.startup.Catalina load
INFO: Initialization processed in 615 ms
07-Nov-2011 17:40:41 org.Apache.catalina.core.StandardService start
INFO: Starting service Catalina
07-Nov-2011 17:40:41 org.Apache.catalina.core.StandardEngine start

INFO: Starting service Catalina
07-Nov-2011 17:40:41 org.Apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.33
07-Nov-2011 17:40:41 org.Apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor Host-manager.xml
07-Nov-2011 17:40:41 org.Apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
07-Nov-2011 17:40:41 org.Apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive test.war
log4j:WARN No appenders could be found for logger (StackTrace).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:ERROR Error initializing log4j: grails/plugins/springsecurity/SecurityConfigType : Unsupported major.minor version 51.0 (unable to load class grails.plugins.springsecurity.SecurityConfigType)
Java.lang.UnsupportedClassVersionError: grails/plugins/springsecurity/SecurityConfigType : Unsupported major.minor version 51.0 (unable to load class grails.plugins.springsecurity.SecurityConfigType)
        at Java.lang.Class.forName0(Native Method)
        at Java.lang.Class.forName(Class.Java:186)
        at Config.class$(Config.groovy)
        at Config.$get$$class$grails$plugins$springsecurity$SecurityConfigType(Config.groovy)
        at Config.run(Config.groovy:116)
07-Nov-2011 17:40:43 org.Apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
07-Nov-2011 17:40:43 org.Apache.catalina.core.StandardContext start
SEVERE: Context [/test] startup failed due to previous errors
07-Nov-2011 17:40:43 org.Apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/test] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
07-Nov-2011 17:40:43 org.Apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive browser.war
07-Nov-2011 17:40:43 org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
07-Nov-2011 17:40:43 org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
07-Nov-2011 17:40:43 org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
07-Nov-2011 17:40:43 org.Apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:40:43 org.Apache.coyote.http11.Http11Protocol start
SEVERE: Error starting endpoint
Java.net.BindException: Address already in use <null>:8080
        at org.Apache.Tomcat.util.net.JIoEndpoint.init(JIoEndpoint.Java:549)
        at org.Apache.Tomcat.util.net.JIoEndpoint.start(JIoEndpoint.Java:565)
        at org.Apache.coyote.http11.Http11Protocol.start(Http11Protocol.Java:203)
        at org.Apache.catalina.connector.Connector.start(Connector.Java:1095)
        at org.Apache.catalina.core.StandardService.start(StandardService.Java:540)
        at org.Apache.catalina.core.StandardServer.start(StandardServer.Java:754)
        at org.Apache.catalina.startup.Catalina.start(Catalina.Java:595)
        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.start(Bootstrap.Java:289)
        at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:414)
Caused by: Java.net.BindException: Address already in use
        at Java.net.PlainSocketImpl.socketBind(Native Method)
        at Java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.Java:336)
        at Java.net.ServerSocket.bind(ServerSocket.Java:336)
        at Java.net.ServerSocket.<init>(ServerSocket.Java:202)
        at Java.net.ServerSocket.<init>(ServerSocket.Java:158)
        at org.Apache.Tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.Java:50)
        at org.Apache.Tomcat.util.net.JIoEndpoint.init(JIoEndpoint.Java:538)
        ... 12 more
07-Nov-2011 17:40:43 org.Apache.catalina.core.StandardService start
SEVERE: Failed to start connector [Connector[HTTP/1.1-8080]]
LifecycleException:  service.getName(): "Catalina";  Protocol handler start failed: Java.net.BindException: Address already in use <null>:8080
        at org.Apache.catalina.connector.Connector.start(Connector.Java:1102)
        at org.Apache.catalina.core.StandardService.start(StandardService.Java:540)
        at org.Apache.catalina.core.StandardServer.start(StandardServer.Java:754)
        at org.Apache.catalina.startup.Catalina.start(Catalina.Java:595)
        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.start(Bootstrap.Java:289)
        at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:414)
07-Nov-2011 17:40:43 org.Apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:40:43 org.Apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
07-Nov-2011 17:40:43 org.Apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/120  config=null
07-Nov-2011 17:40:43 org.Apache.catalina.startup.Catalina start
INFO: Server startup in 2286 ms
07-Nov-2011 17:42:14 org.Apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:14 org.Apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:14 org.Apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:42:15 org.Apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
07-Nov-2011 17:42:15 org.Apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:15 org.Apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:15 org.Apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8443

J'ai essayé des commandes telles que netstat -aon | grep 8080 J'ai essayé ps -efl | grep Java et j'ai arrêté ce processus avec kill <pid> 9pkill Java et ainsi de suite ...

C'est ce que netstat -aon

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       Timer
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      off (0.00/0/0)
tcp        0      0 10.226.122.156:22           109.58.56.15:49215          ESTABLISHED keepalive (5354.40/0/0)
tcp        0      0 :::80                       :::*                        LISTEN      off (0.00/0/0)
tcp        0      0 :::22                       :::*                        LISTEN      off (0.00/0/0)
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               off (0.00/0/0)
udp        0      0 10.226.122.156:123          0.0.0.0:*                               off (0.00/0/0)
udp        0      0 127.0.0.1:123               0.0.0.0:*                               off (0.00/0/0)
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               off (0.00/0/0)
udp        0      0 ::1:123                     :::*                                    off (0.00/0/0)
udp        0      0 fe80::1031:3cff:fe0:123     :::*                                    off (0.00/0/0)
udp        0      0 :::123                      :::*                                    off (0.00/0/0)
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     2337   @/tmp/fam-root-
unix  2      [ ACC ]     STREAM     LISTENING     409    @/com/ubuntu/upstart
unix  2      [ ]         DGRAM                    644    @/org/kernel/udev/udevd
unix  8      [ ]         DGRAM                    1513   /dev/log
unix  3      [ ]         STREAM     CONNECTED     38302
unix  3      [ ]         STREAM     CONNECTED     38301
unix  2      [ ]         DGRAM                    38297
unix  2      [ ]         DGRAM                    22149
unix  3      [ ]         STREAM     CONNECTED     2340   @/tmp/fam-root-
unix  3      [ ]         STREAM     CONNECTED     2339
unix  2      [ ]         DGRAM                    1998
unix  2      [ ]         DGRAM                    1918
unix  2      [ ]         DGRAM                    1895
unix  2      [ ]         DGRAM                    1819
unix  3      [ ]         DGRAM                    648
unix  3      [ ]         DGRAM                    647

Des pensées ou des pointeurs?

26
marko

J'ai aussi eu le même problème. J'ai essayé toutes les options suggérées dans ce fil. Mais n'a pas aidé. Puis vient de courir:

ps -awwef | grep Tomcat

et trouvé un processus obsolète en cours d'exécution. Je l'ai tué en utilisant (-15 au lieu de -9)

Sudo kill -15 <Tomcat pid from previous command>

Et woot! ça a marché. Tomcat redémarré sans aucun problème.

24
user1968048

Ne tuez JAMAIS un processus avec le signal -9, car ce type de processus de mise à mort laisse ses ressources présentes dans le système, qui ne peuvent être supprimées qu'après le redémarrage d'un serveur. n'utilisez kill -9 qu'en cas d'extrême urgence. Il vaut mieux utiliser kill -15, car le nettoyage des ressources peut prendre un certain temps, mais vous obtiendrez toujours le bon vidage de tout cet ensemble de ressources, que le processus consomme. donc très probablement, le Tomcat ne fonctionne pas car il a laissé une partie des ressources dans la mémoire. Donc, effectuez un redémarrage ou essayez de trouver ce qui suit:

  • via la commande lsof et le grep avec Tomcat. il vous montrera tout ce qui est associé à Tomcat

lsof | grep Tomcat

  • recherche d'un fichier de verrouillage pid sur le système de fichiers, laissé par Tomcat.
  • Essayez aussi de publier:

lsof -i TCP | grep 8080

15
Farhan

Le numéro de port est configuré dans $ Tomcat_HOME/conf/server.xml

Si le port 8080 est en cours d'utilisation, modifiez-le dans le fichier server.xml. Le mien ressemble à ceci dans server.xml

<Connector port="8085" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
9
ziggy

Exécuter un lsof peut ne pas suffire. Je suggère cette commande:

Sudo lsof -i :8080

Et vous pouvez ensuite tuer tout processus contenant le port (probablement une autre instance de Tomcat).

9
Vlad Patryshev

Pour info: j'ai eu cette erreur (en tant que novice) parce que j'ai démarré Apache avant de lancer Tomcat.

Si j'arrêtais Apache, puis Tomcat, puis Apache, les erreurs disparaissaient.

4
Danny Schoemann

J'ai également rencontré ce problème, mais dans mon cas, j'ai mis à jour mon application sur mon serveur à partir d'une application de ma source locale. J'ai recherché des instances Tomcat en cours d'exécution avec différentes méthodes, comme indiqué ci-dessus, et je les ai toutes tuées, puis je les ai exécutées plusieurs fois, mais sans aucune utilisation.

La version JDK de la source de l’application était la raison pour laquelle Tomcat n’arrêtait pas ou ne démarrait pas correctement: je l’ai construit avec JDK 1.8, mais la version 1.7 était installée sur mon serveur. Après avoir reconstruit mon application avec JDK 1.7, je l’avais utilisée sur des ordinateurs locaux et sur des serveurs. Espérons que cette information aide aussi quelqu'un comme moi.

2
Khasan 24-7

Après avoir entré le netstat -aon, trouvez le PID du port 8080. Ensuite, accédez au gestionnaire de tâches et recherchez le nom de l'image pour le PID dans l'onglet Processus. Faites un clic droit sur le nom de l'image et cliquez sur le processus de fin. Maintenant, si vous démarrez le serveur, cela fonctionnera.

2
Vishwa

Parfois, les servlets doivent effectuer un travail considérable pour pouvoir être arrêtés. Tomcat peut donc mettre un certain temps à s’arrêter. Si vous attendez un court instant avant de redémarrer le serveur, le problème peut disparaître. Dans le cas contraire, il est possible qu'une application Web ne réponde pas aux signaux de terminaison de la machine virtuelle, auquel cas Tomcat risque de ne pas être arrêté correctement.

Bref, essayez d’ajouter un sommeil à votre script de redémarrage ou attendez un peu avant d’appeler de nouveau démarrer.

1
Zero

Le problème est que Tomcat peut ne pas s'éteindre correctement. essayez d’ajouter un sommeil à votre script de redémarrage ou attendez simplement un bon moment avant de redémarrer Tomcat.

1
murali

ps -awwef | grep Tomcat

a travaillé pour moi

trouvé un processus obsolète en cours d'exécution. Je l'ai tué en utilisant (-15 au lieu de -9)

0
Yash

La meilleure solution consiste à arrêter l'exécution de l'instance Tomcat à l'aide de la commande suivante:

kill $ (ps -aef | grep Java | grep Apache-Tomcat-7.0.47 | awk '{print $ 2}')

Changez la version 7.0.47 avec votre version de Tomcat. Cela fonctionne bien et le numéro de port, c’est-à-dire 8080, sera bientôt disponible. 

0
eyasu

Je faisais face à un problème similaire et a constaté que le port 8080 était utilisé pour une autre application. utilisez netstat commnad sur Windows et voyez tous les ports utilisés. 

changez le port du connecteur dans le fichier server.xml. vous pouvez trouver ce fichier dans votre répertoire d’installation Tomcat dans le dossier conf . ouvrez ce fichier, le mien était comme ci-dessous:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

remplacez la valeur du port par un autre port, de préférence dans la série 80. esperons que ça marche. 

0
Navin Prakash Das