サンプル集  >  other  >  tomcat起動時Bindエラー
tomcat起動時Bindエラー
2013/07/22

eclipseからTomcatを起動したときに以下のエラーが出ました。

SEVERE: エンドポイントを初期化中のエラーです
java.net.BindException: Address already in use: JVM_Bind:8080
    at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpE
ndpoint.java:311)
    at org.apache.coyote.http11.Http11BaseProtocol.init(Http11BaseProto
col.java:139)

◆環境
OS Windows 7 Professional Service Pack 1 (64bit)
eclipse Helios Service Release 2
tomcat 5.5
tomcat plugin 3.3.0

メッセージの通り、8080ポートが既に使われているようです。 netstatコマンドで状況を確かめます。

>netstat -oan

アクティブな接続

  プロトコル  ローカル アドレス  外部アドレス  状態       PID
  TCP         0.0.0.0:135        0.0.0.0:0     LISTENING  816
  TCP         0.0.0.0:445        0.0.0.0:0     LISTENING  4
  TCP         0.0.0.0:1521       0.0.0.0:0     LISTENING  1352
  TCP         0.0.0.0:3306       0.0.0.0:0     LISTENING  1628
  TCP         0.0.0.0:8080       0.0.0.0:0     LISTENING  1352
  TCP         0.0.0.0:17500      0.0.0.0:0     LISTENING  2816
  TCP         0.0.0.0:49152      0.0.0.0:0     LISTENING  552
:

PID:1352が8080を使ってますね。 tasklistで1352のプログラムを特定します。

ちなみに1352のプログラムは1521も使ってますね。

>tasklist

イメージ名             PID セッション名  セッション# メモリ使用量
==================== ===== ============= =========== ============
System Idle Process      0 Services                0         24 K
System                   4 Services                0      3,104 K
smss.exe               388 Services                0      1,424 K
:
TNSLSNR.EXE           1352 Services                0     41,300 K
:

TNSLSNR.EXEが8080を使っているという事が分かりました。

Oracle Database XEのhttpリスナーのポートが8080になっていたためtomcatのデフォルトポートとぶつかっている事が原因でした。 8080はtomcatで使いたいのでOracleの方のポート番号を変更します。 ポート番号を変えるにはSQL*Plusにsystemでログインしコマンドを実行します。

今回は28080にポートを変更してみました。

SQL> exec dbms_xdb.sethttpport(28080)

PL/SQLプロシージャが正常に完了しました。

これでtomcat起動時のBindエラーが出なくなりました。

参考

winsock2 I connectエラー処理追加
    netstatで待ち受けIP、ポートを確認する例です。

▲ PageTop  ■ Home


Copyright (C) 2013 ymlib.com