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

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

関連記事

「サーブレットコンテナ」や「サーブレットのライフサイクル」とは?(サンプルプログラム付)

※本記事は「サーブレットとは?その役割やHelloWorldサンプルコードのご紹介」の続編です。 (0)目次&概説 (2) サーブレットコンテナの基本  (2-1) サーブレットコンテナとは?  (2 …

Linuxサーバー(CentOS6)にTomcatをインストールする手順

(0)目次&概説 (1) Tomcatとは? (2) Tomcatインストールと疎通チェック  (2-1) Tomcat用ユーザーの作成  (2-2) Tomcatの資源をダウンロード  (2-3) …

JavaのJDBC接続でjava.sql.SQLRecoverableException: Closed Connectionが発生した時の解決メモ

(0)目次&概説 (1) エラー事象の概要  (1-1) エラーの発生状況  (1-2) エラーメッセージ全文 (2) エラーの原因 (3) エラーの対処方法  (3-1) エラーの修正内容  (3- …

no image

jarファイル実行で「java.lang.ClassNotFoundException: com.sun.prism.es2.X11GLFactory」が出る原因と対策

  <目次> (1) jarファイル実行で「java.lang.ClassNotFoundException: com.sun.prism.es2.X11GLFactory」が出る原因と対策 …

Javaのスレッドとは?概念やサンプルプログラムのご紹介

  <目次> (1) Javaのスレッドとは?概念やサンプルプログラムのご紹介  (1-1) Javaのスレッドとは?  (1-2) 方法①:Threadクラス継承の構文  (1-3) 方法 …

  • English (United States)
  • 日本語
Top