今日はHudsonの設定の続きを書くつもりだったが、Hudsonとjava.net.BindExceptionで検索されてきている人がいたので、java.net.BindExceptionがでた場合の対処をもう少し詳しく書いておきます
参考:Hudsonで出たエラー
[Winstone 2009/xx/xx xx:xx:xx] - Error during HTTP listener init or shutdown
java.net.BindException: Address already in use: JVM_Bindjava.net.BindExceptionがでた場合はポートが既に使用されている場合がほとんど。
この場合の対処は大きく2つ
1.使用するポートを変更する
2.ポートを使用しているプロセスを終了させる
■
使用するポートを変更する java -jar hudson.zip --httpPort=8081 というように、--httpPort=xxxx と指定してやればいい。
当然、接続時には指定したポート番号を指定すること。
このほか、hudsonのオプションは hudson.zip のあとに --help とつければ確認できる。
■
ポートを使用しているプロセスを終了させる。 とりあえず、何が使用しているかを特定する必要がある。
1.ポートを使用しているプロセスを特定する
Hudsonはデフォルトでは 8080番ポートを使用する。
なんで、まずコマンドプロンプトを管理者モードで起動。
で、下記コマンドを実行
netstat -aob すると、以下のようにポートを使用している一覧がずらずら表示される
TCP 127.0.0.1:6999 HOME-NOTE:50229 ESTABLISHED 2320 [TmProxy.exe]
TCP 127.0.0.1:8080 HOME-NOTE:50230 ESTABLISHED 5772 [java.exe]
TCP 127.0.0.1:27015 HOME-NOTE:0 LISTENING 328 [AppleMobileDeviceService.exe] ポート8080を探すと、どうやらjava.exeが使用しているらしい。
この時点で使用しているのが何かわかれば、そのアプリを止めるなりすればOK。
ただ、今回のようにアプリ名だけでは何かわからない場合もある。
2.java.exeが何かを特定する。
java.exeが何者かを調べる。
まずは、タスクマネージャを起動して、プロセスタブを選択
画面上部のメニューから「表示」→「列の選択」をクリック。
表示されるメニューから「PID」と「コマンドライン」にチェックをいれて「OK」
画面下部の「全ユーザのプロセスを表示する」をチェック
すると、PIDと実行時のコマンドラインが表示される。
コマンドライン引数の実行しているjarファイルを確認すれば、何が使用しているかを特定できる。

3.それでも特定できない場合
2で確認したコマンドラインにjarの指定がない場合もある。
これは少々やっかい。
何かいい方法はあるのでしょうか?
とりあえず、コマンドラインのjavaの引数内に、wrapper.jarなどとある場合は、Java Service Wrapperを使用してサービス化した何かの可能性が高い。
心当たりがあれば、そのサービスを停止してプロセスが終了するか確認する。
これでも特定できない場合は、素直にhudson側のポート番号を変更したほうが良いかもしれない。
以上。
スポンサーサイト
テーマ : ソフトウェア
ジャンル : コンピュータ