Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Eclipse Java Tomcat

Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法

投稿日:2021年1月24日 更新日:

<目次>

(1) Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法
 (1-1) 発生状況
 (1-2) 原因
 (1-3) 対処方法

(1) Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法

(1-1) 発生状況

動的Webアプリをホストしている(コンテンツの置き場所を提供)Tomcatを再起動しようとした際に以下のエラーが出ました。
(エラーメッセージ①)

several ports (8005, 8080) required by Tomcat v8.5 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).

(図111)

また、運良く起動を開始できた場合でも、途中で次のエラーで止まってしまっていました。
(エラーメッセージ②)

java.net.BindException: Address already in use (Bind failed)
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
        at java.net.ServerSocket.bind(ServerSocket.java:390)
        at java.net.ServerSocket.(ServerSocket.java:252)
        at org.apache.catalina.core.StandardServer.await(StandardServer.java:421)
        at org.apache.catalina.startup.Catalina.await(Catalina.java:776)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:722)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474)

(図112)

停止する際は、明示的にTomcat停止用のシェル「$CATALINA_HOME/bin/shutdown.sh」を実行しても、約10秒後に勝手に起動する現象が発生しました。
(図113)

(動画)停止後、約10秒程度でTomcatが再度起動する様子

目次にもどる

(1-2) 原因

これの原因はTomcatの「Unit File」と呼ばれる設定ファイルにて「RestartSec=10」が設定されており、停止や異常時にsystemdに10秒後に再起動するように指示していたため、手動で止めても再度起動していたためでした。

(図121)

# Unit Fileの場所
/etc/systemd/system/tomcat.service
つまり、systemd以外の止め方(「$CATALINA_HOME/bin/shutdown.sh」等)でTomcatを止めても、すぐ10秒後にはsystemdによって再起動されていたのです。

これによりポート(8080や8005)が直ぐに埋まってしまい、Eclipse側でTomcatが起動できなくなっていました。
 

目次にもどる

(1-3) 対処方法

①他Tomcatプロセスのチェック
他のTomcatプロセスが起動しているか?は次のURLを見て確認できます。もしここでTomcatのデフォルトのページが開くようですと、別のプロセスが起動されている事になりますので、そちらをkillしていく事になります。

http://localhost:8080
 
(図131)Tomcatのデフォルトページ(表示されるパターン)
②Tomcat停止&起動
TomcatはCentOS7以降であれば「systemd」コマンドを使って起動、停止、再起動していきます。

# 起動
sudo systemctl start tomcat
# 停止
sudo systemctl stop tomcat

 

systemdやsystemctlについては別途、下記URLの記事にて解説をしていますので、併せてご覧頂けると理解が深まるかと思います。
記事:Linuxにおけるデーモンやサービスの意味や常用コマンドについて
https://rainbow-engine.com/linux-daemon-useful-commands/

これを行う事で、先程表示されていたデフォルトのページは表示されなくなり、元々起動したかったEclipse側のTomcatが起動できるようになっているはずです。
(図132)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Eclipse, Java, Tomcat

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

TomcatでEclipseを使う際にserver.xmlを編集しても上書きされる事象の対処方法

<目次> (1) TomcatでEclipseを使う際にserver.xmlを編集しても上書きされる事象の対処方法  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処法 …

JavaでJSON形式のデータから値を抽出する方法+代表的なエラー対処も紹介

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) JSON形式の概要  (2-1) JSON形式とは?  (2-2) JSON形式のフォーマット (3) JSON形式の抽出方法・事前準 …

「Graphics Device initialization failed for : es2, sw」エラーの原因と対処方法(Java FX関連)

  <目次> (1) 「Graphics Device initialization failed for : es2, sw」エラーの原因と対処方法(Java FX関連)  (1-1) エ …

Javaのポリモフィズムのメリットや例をご紹介(サンプルプログラムあり)

<目次> (1) Javaのポリモフィズムのメリットや例をご紹介  (1-1) ポリモフィズムとは?  (1-2) サンプルプログラム  (1-3) ポリモフィズムのメリット  (1-4) 参考:ポリ …

Javaの選択ソートとは?アルゴリズムの流れ+サンプルプログラムをご紹介

<目次> (1) バイナリ―サーチとは?Javaのサンプルプログラムを用いて解説  (1-1) バイナリ―サーチのアルゴリズム  (1-2) バイナリ―サーチの性能(処理回数)  (1-3) バイナリ …

  • English (United States)
  • 日本語
Top