Java Webプロジェクトを実行するために次の設定を行いましたが、どういうわけか私のTomcatは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
次に、必要に応じて、Eclipseから新しいサーバーをセットアップし、Tomcatのインストールパスを指定します。
いくつかのフォーラムでアドバイスされているように、Tomcat-juli.jar
クラスパスへ。
これらすべてにもかかわらず、Tomcat Serverを起動しようとすると、Tomcatが45秒以内に開始しないというエラーが表示されます。
次のログメッセージが表示されます。
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
複数のフォーラムを紹介しましたが、状況にひどくこだわっています。案内してください。
これらの行:
SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]
Java.net.BindException: Address already in use: JVM_Bind <null>:8009
ポート8009でサービスが既に実行されていることを意味します。Tomcat(with ajp)は既に実行されていますか?
8009で実行されているサービスが必要な場合、server.xmlのコネクタ構成を次のように変更できます。
<Connector port="8089" protocol="AJP/1.3" redirectPort="8443" />
ポート番号8009
は、OSで実行中の他のプロセスによってすでに占有されています そのプロセスを検索して停止してください または、Tomcatを別の(空き)ポートで実行する
このポートでそれぞれの(リスニング)プロセスを強制終了します。つまり8009。
netstat -a -o -n
プロセスのPIDを探します。次のようになりますTCP [::]:8009 [::]:0 LISTENING 892
taskkillコマンドを使用してプロセスを強制終了します。例:
taskkill /F /PID 892
Java.net.BindException:すでに使用されているアドレス:JVM_Bind:8009
これは、他のプロセスがすでにこのポートを使用していることを意味します。別のTomcatインスタンスである可能性がありますか?
この問題を修正するためにserver.portを変更する必要はないはずです...
Mac/Unix/Linuxユーザー:Tomcatを再起動した後、この問題が引き続き発生する場合は、Tomcatが不適切にシャットダウンされ、リソースが残っていることが原因である可能性がありますそれに関連付けられ、現在ロックされています。次のコマンドを実行すると、これらのリソースのPIDを表示できます。
lsof | grep Tomcat
以下を使用してこれらのプロセスを終了します。
kill -15 <PID>
これで問題が解決するはずです。
kill -15コマンドを使用して、SIGKILL(-9)よりもプロセスをTERM(-15)にすることをお勧めします。 -15スイッチは、プロセスにシャットダウンフェーズを開始し、制限されたリソースをクリーンアップする信号を送信します。
動作しない場合は:http:// localhost:8089を試してください(または)これを試してください:Set:JRE_HOME:C:\ Program Files\Java\jre1.5.0_11(JREのバージョンに依存)およびC:\を追加しますFiles¥Java¥jre1.5.0_11(JREのバージョンに依存)¥binをプログラムし、Eclipseのパスに移動します-> Windowsの設定に移動します。
使用可能なポートをすべて、空いているポートで1つずつ更新します。これで問題を解決する必要があります
31-Jul-2019 16:28:30.641 SEVERE [main] org.Apache.catalina.core.StandardServer.await StandardServer.await:create [localhost:8005]:Java.net.BindException:アドレスすでに使用中:JVM_Bind
他の何かがポート8009を使用しています。
8009を使用しているものをシャットダウンするか、server.xmlを変更して8009以外のポートを使用します
TIL:サーバー上の他の誰かが、ポート80でIISを開始し、誰にも通知しない。
Tomcatを同じポートに設定している場合、このエラーも報告されます。
IISまたはTomcatのポートを変更する必要があります。
IISのポートを変更するには:
管理ツール|インターネットインフォメーションサービス(IIS)マネージャー
デフォルトWebサイトを右クリック|バインディングの編集...ポートの変更
-または-
Tomcatのポートを変更するには:
conf\server.xmlを開き、タグのポート値を更新します。
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
Tomcatを再起動します
2つのWebサービスをお楽しみください。
これは通常、Tomcatのコネクタ/シャットダウンポートが既に使用されている場合に発生します。最初に、shutdown.batを実行します(Tomcatの1つのインスタンスが既に実行されていることを忘れる場合があります)次に、コマンドプロンプトの実行で
netstat -aon | findstr 0.0:<your port number which is giving bind exception>
現在ポートを使用しているアプリケーションのPIDを取得します。そのアプリケーションを強制終了するか、実行時にリストされていない他のポートを使用します
netstat -a -o -n