Tomcatjava.net.BindException:Javaですでに使用中のアドレスエラー
1. 概要
このクイックチュートリアルでは、一般的な java .net.BindingExceptionエラーの原因と、すでに使用中のアドレスエラーとその対処方法について説明します。
2. エラーはいつ発生しますか?
ご存知のように、ApacheTomcatサーバーはデフォルトで8080ポートを使用します。
ポート番号の範囲は0〜65535ですが、ポートは常に1つのアプリケーションのみが占有できます。
例外は、アプリケーションが他のプロセスによってすでに使用されているポートを使用しようとしている、またはTomcatサーバーを適切に停止しなかったことを示しています。
3. 診断
このエラーを解決するには、そのポートを使用しているサービスを強制終了するか、Webサーバーを別のポートで実行するように変更します。
3.1. 対立の発見
この場合、どのアプリケーションがポートを使用しているかを確認する必要があります。
netstat コマンドは、現在のTCP/IP接続を検出するために使用できます。
以下は、さまざまな環境でプロセスを検索して強制終了するために使用できるコマンドです。
Windowsでは、出力の最後の列に、現在8080で実行されているサービスのプロセスIDが表示されます。
netstat -ano | find "8080"
出力:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376
ここで、21376は、ポート8080でリッスンしているプロセスのプロセスIDです。
Unix / Linux環境の場合:
netstat -pant | grep "8080"
出力:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376
Windowsの出力と同じです。 ここで、21376は、ポート8080でリッスンしているプロセスのプロセスIDです。
Mac OS Xの場合:
lsof -t -i :8080
出力:
21376
PIDのみが表示されます。
3.2. 別のポートでサーバーを実行している
どのプロセスが実行されているのか、なぜ実行されているのか、そのポートで実行する必要があるのかがわかっている場合は、サーバーアプリケーションが実行しようとしているポートを変更できます。
Tomcatポートを変更するには、server.xmlファイルを編集する必要があります。 これをする:
- tomcat /confフォルダを開きます
- server.xmlを編集します
- コネクタポートを新しいポートに交換してください
- Tomcatサーバーを再起動します
server.xmlファイルは次のようになります。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" />
これで、Tomcatはカスタマイズされたポートで実行されます。
3.3. 実行中のサービスを強制終了します
実行中のプロセスを停止するには、killコマンドを使用できます。
3.1。で見つけたプロセスIDを使用すると、実行しているオペレーティングシステムに応じて異なるコマンドが必要になります。
Windows環境の場合:
taskkill /F /PID 21376
Unix / Linux環境の場合:
kill - 21376
Mac OS X環境:
kill -9 21376
4. 結論
記事の冒頭で述べたように、 java.net.BindingException は一般的ですが、簡単に解決できるエラーです。
主な問題は、 netstat ターミナルアプリケーションのポートを使用して競合するサービスを見つけ、適切なアクションを決定することです。
一度発見されると、修正は簡単です。