EclipseでTomcatを使用中に下記のようなアラートメッセージが出て、Tomcatサーバーを起動できない時があります。
今回は、このエラーでサーバーが起動出来ない場合の対処方法を記載していきます。
原因
簡単に言うと原因は「ポート番号の競合」なのですが、ポート番号というのは「そのコンピュータで動いているサービス(プログラム)を通信の中で識別するための番号」のようなものです。
Tomcatをサービスとして起動する際は「8005,8080,8009」という3つのポート番号がコンピュータ内で使われます。この中の「8080」は「HTTP通信」の際に使われるポート番号なので、Eclipce内のTomcatを使って開発をする際のURLが「http://localhost:8080/コンテキスト名/…」のようになるわけです。
前述のエラーが発生するパターンとして、Tomcatサーバーを再起動した際や、サーバーの実行構成を不必要に増やした際に発生することが確認できました。
つまり「先ほどまで動いていたTomcatサーバーがなんらかの理由で停止されず、2つめのサーバーを起動した際に、同じポート番号で起動しようとしている状態になった」ことが原因です。
それによって「ポート番号の競合」が起きたのです。
対処方法:Eclipseの機能でポート番号の書き換えをする
Eclipseのツールバーのウィンドウを選択し、そこから「ビューの表示」→「その他」→「サーバー」を選んで、下記のように「サーバー」ビューが表示させます。
今回はわざと、同じ実行構成のサーバーを2つ作成して起動させ、ポート番号の競合を起こしました。起動出来なかった方のサーバー構成名をダブルクリックすると、サーバー設定を修正できる画面が表示されます。
この画面右側の「ポート」という項目を修正します。
「8005,8080,8019」だった番号を修正し、「8015,8090,8019」に修正します。
今回はわかりやすいように元のポート番号に10ずつ数字を足していきましたが、競合しなければ他の番号でも構いません。この際、変更したポート番号が別の起動中サービスのポート番号と競合してしまうとエラーが出るので注意してください。
サーバーを再起動すると、無事に起動出来るのが確認できます。
URLが「http://localhost:8090/コンテキスト名/…」になる以外、特に問題ありません。
他の対処方法
他の対処方法としては「コンピュータの中で動いているTomcatのサービスをWindowsの管理ツールのサービス一覧から探して停止させる」「Serversフォルダ内のserver.xmlの中で定義されているポート番号を直接書き換える」などの対処方法もあります。
ただし、誤って別のサービスを停止させてしまったり、server.xmlの構造が分からず不必要な修正を加えてしまったりする可能性もあるため、方法を調べて実施する際は気をつけてください。
練習用の環境であれば、簡単かつ安全に修正できる、今回紹介したやり方で一時的な対処を取る形式で問題ないでしょう。