J'ai effectué les réglages suivants pour exécuter un projet Web Java, mais mon Tomcat ne démarre pas à partir d'Eclipse:
Java_HOME : C:\Program Files\Java\jdk1.6.0_03
PATH : C:\Program Files\Java\jdk1.6.0_03\bin
CATALINA_HOME : D:\javaworkspaces\Apache-Tomcat-7.0.27
Ensuite, comme requis, j'ai configuré un nouveau serveur à partir d'Eclipse et indiqué le chemin d'installation de Tomcat.
Comme indiqué dans certains forums, j'ai ajouté Tomcat-juli.jar
au chemin d'accès à la classe.
Malgré tout cela, lorsque j'essaie de démarrer le serveur Tomcat, je reçois le message d'erreur car Tomcat ne regarde pas en 45 secondes.
Je reçois le message de 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 Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_03\bin;D:\Eclipse-jee-Indigo-SR2-win32\Eclipse;;.
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 référé à plusieurs forums mais je suis mal pris avec la situation. Guidez-moi s'il-vous-plaît.
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'un service est déjà en cours d'exécution sur le port 8009. un serveur Tomcat (avec ajp) est-il déjà en cours d'exécution?
si le service sur 8009 est nécessaire, vous pouvez modifier la configuration du connecteur dans server.xml comme suit:
<Connector port="8089" protocol="AJP/1.3" redirectPort="8443" />
Il indique que le numéro de port 8009
est déjà occupé par un autre processus en cours d'exécution sur votre système d'exploitation essayez de rechercher ce processus et de l'arrêter ou de faire en sorte que votre Tomcat s'exécute sur un autre port (libre)
tuer le processus (d’écoute) correspondant sur ce port, c’est-à-dire 8009 .
netstat -a -o -n
rechercher le PID du processus. Cela peut ressembler à quelque chose comme ceci TCP [::]: 8009 [::]: 0 LISTENING 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 utilise déjà ce port. Pourrait-il s'agir d'une autre instance de Tomcat?
Vous ne devriez pas avoir à changer le server.port pour résoudre ce problème ...
Mac/Unix/Linux Utilisateurs: Si, après avoir redémarré Tomcat et que ce problème existe toujours, c'est probablement parce que Tomcat a été arrêté de manière incorrecte et que des ressources lui sont encore associées qui sont maintenant verrouillées. les PID de ces ressources en exécutant cette commande:
lsof | grep Tomcat
Terminez ces processus en utilisant:
kill -15 <PID>
Cela devrait résoudre votre problème.
Si vous utilisez la commande kill -15 pour TERM (-15), le processus plutôt que SIGKILL (-9) est préférable. Le commutateur -15 envoie au processus le signal pour qu'il commence ses phases d'arrêt et nettoie les ressources limitées.
Essayez: http: // localhost: 8089 Si cela ne fonctionne pas (ou) Essayez ceci: Définir: JRE_HOME: C:\Program Files\Java\jre1.5.0_11 (dépend de votre version de JRE) et ajoutez le répertoire C:\Program Files\Java\jre1.5.0_11 (selon votre version de JRE)\bin au chemin Eclipse-> allez dans les préférences de Windows: serveur-> RuntimeEnvironment supprimez Server et Referesh ajoutés, puis TomcatServer
Quelque chose d'autre utilise le port 8009.
Soit vous arrêtez ce qui utilise 8009, soit vous changez le fichier server.xml pour utiliser un autre port que 8009
TIL: Quelqu'un d’autre sur un serveur peut démarrer IIS sur le port 80 et ne rien dire à personne.
Si votre Tomcat est configuré pour le même port, il signalera également cette erreur.
Le port sur IIS ou Tomcat devra être modifié.
Pour modifier le port dans IIS:
Outils d'administration | Gestionnaire des services Internet (IIS)
Clic droit sur le site Web par défaut | Modifier les liaisons ... Changer de port
-OU-
Pour modifier le port dans Tomcat:
Ouvrez conf\server.xml et mettez à 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.
Cela se produit généralement si le port Connector/shutdown du Tomcat est déjà utilisé. Tout d’abord, lancez le fichier shutdown.bat (Parfois, il nous manque une instance de Tomcat en cours de fonctionnement).
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. Supprimez cette application ou utilisez un autre port non répertorié lors de l’exécution.
netstat -a -o -n