Tomcat ne démarre pas (lancer java.net.BindException:)
j'ai fait les réglages suivants pour exécuter un projet Web Java, mais mon Tomcat ne part pas d'Eclipse:
JAVA_HOME : C:Program FilesJavajdk1.6.0_03
PATH : C:Program FilesJavajdk1.6.0_03bin
CATALINA_HOME : D:javaworkspacesapache-tomcat-7.0.27
alors comme demandé, j'ai configuré un nouveau serveur à partir D'Eclipse et j'ai donné le chemin D'installation Tomcat.
comme conseillé dans certains forums, j'ai ajouté tomcat-juli.jar
au chemin de classe.
Malgré tout cela quand j'essaie de démarrer le serveur Tomcat, j'obtiens l'erreur que tomcat ne regarde pas dans 45 secondes.
, j'obtiens le message du journal suivant:
Jul 26, 2012 5:49:34 PM 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: C:Program FilesJavajre6bin;C:WindowsSunJavabin;C:Windowssystem32;C:Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesTortoiseSVNbin;C:Program FilesJavajdk1.6.0_03bin;D:eclipse-jee-indigo-SR2-win32eclipse;;.
Jul 26, 2012 5:49:34 PM org.apache.tomcat.util.digester.SetPropertiesRule
begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:JEE_Day01' did not find a matching property.
Jul 26, 2012 5:49:34 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-80"]
Jul 26, 2012 5:49:35 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jul 26, 2012 5:49:35 PM org.apache.coyote.AbstractProtocol init
SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]
java.net.BindException: Address already in use: JVM_Bind <null>:8009
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:566)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:417)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:956)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:624)
at org.apache.catalina.startup.Catalina.load(Catalina.java:649)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)
Caused by: java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:380)
... 16 more
Jul 26, 2012 5:49:35 PM org.apache.catalina.core.StandardService initInternal
SEVERE: Failed to initialize connector [Connector[AJP/1.3-8009]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:624)
at org.apache.catalina.startup.Catalina.load(Catalina.java:649)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:958)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
... 12 more
j'ai fait référence à plusieurs forums mais je suis mal coincé avec la situation. Merci de me guider.
9 réponses
ces lignes:
SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]
java.net.BindException: Address already in use: JVM_Bind <null>:8009
implique qu'il existe déjà un service sur le port 8009. est-il un tomcat (avec ajp) fonctionne déjà?
si le service tournant sur 8009 est nécessaire, vous pouvez changer la configuration du connecteur dans le serveur.xml à quelque chose comme ci-dessous:
<Connector port="8089" protocol="AJP/1.3" redirectPort="8443" />
il est dit que le numéro de port 8009
est déjà occupé par un autre processus tournant sur votre système D'exploitation essayez de chercher ce processus et arrêtez-le ou faites tourner votre tomcat sur un autre (libre) port
tuer le processus respectif (d'écoute) sur ce port i.e. 8009. use
netstat -a -o -n
pour rechercher le PID du processus. Il peut ressembler à quelque chose comme ceci TCP [::]:8009 [::]:0 ÉCOUTE 892
utilisez la commande taskkill pour tuer le processus. exemple:
taskkill /F /PID 892
java.net.BindException: adresse déjà utilisée: jvm_bind: 8009
Cela signifie qu'un autre processus l'utilise déjà ce port. Ça pourrait être une autre affaire Tomcat?
Vous ne devriez pas avoir à changer le serveur.port pour résoudre ce problème...
utilisateurs Mac/Unix/Linux : si après avoir redémarré Tomcat, et ce problème existe toujours, c'est probablement parce que Tomcat a été arrêté incorrectement et qu'il y a encore des ressources associées qui sont maintenant verrouillées. Vous pouvez voir les PIDs de ces ressources en exécutant cette commande:
lsof | grep tomcat
mettre fin à ces procédés utilisant:
kill -15 <PID>
ça devrait régler votre problème.
en utilisant la commande kill -15 à terme (-15) le processus plutôt que SIGKILL (-9) est préférable. Le commutateur -15 envoie au processus le signal pour commencer ses phases d'arrêt et nettoyer les ressources limitées.
Try :http://localhost:8089 si elle n'est pas travaillé (ou) Essayez ceci: Set:JRE_HOME : C:\Program fichiers\Java\jre1.5.0_11 (dépend de votre version de JRE) et ajouter le C:\Program fichiers\Java\jre1.5.0_11 (dépend de votre version de JRE)\bin vers le chemin Eclipse-> aller à préférences windows:serveur->RuntimeEnvironment supprimer ajouté Serveur et Referesh et d'ajouter de nouvelles TomcatServer
TIL: Quelqu'un d'autre sur un serveur peut démarrer IIS sur le port 80 et ne le dire à personne.
Si vous avez votre tomcat configuré pour le même port, il signalera également cette erreur.
Le port sur IIS ou tomcat devra être changé.
pour modifier le port dans IIS:
Outils administratifs / Internet Information Services (IIS) Manager
Clic droit sur le Site Web par défaut / Modifier Contraignant...
Changement De Port
-OU-
pour modifier le port de Tomcat:
Ouvrir le serveur de conf\.xml et mettre à jour la valeur du port dans la balise:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
Redémarrer Tomcat
profitez de 2 services web.
quelque chose d'autre utilise le port 8009.
soit arrêter la chose qui utilise 8009 ou changer votre serveur.xml pour utiliser un autre port que 8009
cela se produit généralement si le port connecteur / arrêt du tomcat est déjà utilisé. Tout d'abord, exécutez la mise à l'arrêt.bat (parfois on oublie qu'une instance du tomcat est déjà en cours d'exécution) Ensuite, dans l'invite de commande, Lancez
netstat -aon | findstr 0.0:<your port number which is giving bind exception>
pour obtenir le PID de l'application qui utilise actuellement votre port. Soit tuer cette application ou utiliser un autre port qui n'est pas listé lorsque vous exécutez
netstat -a -o -n