localhostでTomcatを起動しようと思ったら8080ポートが既に使われていた件

Eclipseからtomcatを起動しようとした時に8080番ポートが使用済みとのエラーが発生しました。エラーメッセージは以下の通り。

ローカル・ホスト の Tomcat v8.0 サーバー で必要なポート 8080 はすでに使用中です。サーバーはすでに別のプロセスで稼働中であるか、システム・プロセスがそのポートを使用中である可能性があります。このサーバーを始動するには、他のプロセスを停止するか、ポート番号を変更する必要があります。

8080番ポートを使っている心当たりがなかったので調べてみることに、


Windowsでの作業だったため、とりあえずコマンドプロンプトを起動。

Windows + R
ファイル名を指定して実行

cmd
コマンドプロンプト起動

netstat -ano

-a 現在のすべての接続を表示する
-n -aオプションと併用して接続情報を表示する際にIPアドレス、ポート番号の名前解決をしない
-o プロセスIDの表示

実行結果

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 2780

ctrl + alt + del
表示>列の選択>PID(プロセスID)にチェック>OK
全ユーザーのプロセスを表示するにチェック

表示したPIDとnetstatで調べたプロセスIDで判別してみると、

TNSLSNR.EXE
 – oracle TNSLSNR Executable

oracle関連のプロセスが起動中のようなのでサービスを確認します。

Windows スタートメニュー>サービス 起動

OracleServiceXE
OracleXETNSListener

Oracle XE( = OracleDatabase Express Edition)で自動起動になっているプロセスを2つ発見

OracleServiceXE 右クリック>停止
OracleXETNSListener 右クリック>停止
タスクマネージャに表示していたプロセス「TNSLSNR.EXE」が消えた!

犯人はOracleDatabaseExpressEditionということで、
自動起動になっていた2つのプロセスを手動起動に変更。

OracleServiceXE ダブルクリック>スタートアップの種類:手動
OracleXETNSListener 右クリック>スタートアップの種類:手動
OK
しかしなんで8080ポートが使われていたのか、
8080はよく使うポートなので設定しないと思うのですが
Oracle XE インストール時の記憶が曖昧なためもう少し調査。

その結果以下のような記事を見つけました。

Oracle11g XEをインストールするときの注意点
http://qiita.com/alpha_pz/items/8123375f6b9660b3ef32

一部を抜粋させていただきますと、

Oracle11g XEをインストールする際、以下の不具合(仕様)があります。
管理コンソールはポート8080で固定。
ちなみにこのポート番号は、インストーラ(ないしはサイレントインストール時の設定ファイル)で変更できるようになっていますが、なんと これは正しく動作せず、ポート8080を使って インストールを試行します。

ちなみにこのポート番号は、インストーラ(ないしはサイレントインストール時の設定ファイル)で変更できるようになっていますが、なんと これは正しく動作せず、ポート8080を使って インストールを試行します。

えぇぇ・・・

仕様という名の酷いバグでした。

今回私はプロセス自体を止めて対応しましたが、
ページには対策としてプロシージャが載っていましたので、
合わせて抜粋させていただきますが、
詳細につきましては記事の方をご確認ください。
exec dbms_xdb.sethttpport([ポート番号])

他に有名なところだと「Skype」が80番ポートを使っていたりしますが、
知らないと調べるのに時間が取られしまうちょっと面倒くさい問題ですね。

コメントを残す

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