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のフォーム認証が失敗した際のトラブルシューティングメモ

<目次> (1) Tomcatのフォーム認証が失敗した際のトラブルシューティングメモ  (1-1) 事象①:正しいID/パスワードを入れてもログインエラーになる   (1-1-1) 発生状況・エラーメ …

JavaのServletでフォーム認証(Form認証)をカスタム実装する方法

<目次> (1) JavaのServletでフォーム認証(Form認証)をカスタム実装する方法  (1-1) フォーム認証の概要  (1-2) フォーム認証をカスタムする際のポイント  (1-3) 構 …

JSPでcssが適用されない(Resouce interpreted as Stylesheet but transferred with MIME type)事象のトラブルシューティング記録

<目次> (1) JSPでcssが適用されない(Resouce interpreted as Stylesheet but transferred with MIME type)事象のトラブルシューテ …

Javaでdouble型での誤差を対処する方法について+サンプルプログラムも紹介

(1) Javaでの誤差の対処法  (1-1) 対処が必要なケース  (1-2) 対処の方法   (1-2-1) BigDecimalクラスでの対処   (1-2-2) int型を優先的に使い対処   …

TwitterAPIのJavaでの使い方をご紹介~【入門編】Twitter4j導入~ハッシュタグでツイート検索するまで~

<目次> (1) TwitterAPIのJavaでの使い方をご紹介  (1-1) STEP0:前提条件  (1-2) STEP1:ライブラリ(jar)のダウンロード  (1-3) STEP2:アプリケ …

  • English (United States)
  • 日本語
Top