eclipseで、JBossサービスを起動する際に、JBossが使用するportが既に、別のアプリケーションが使用している場合に、Exceptionが発生する。ひとまず、コマンドプロンプトからどのプロセスがportを使っているのかを調べて、該当のアプリケーションを終了させることで対処できた。その際の手順を記します。
1. コマンドプロンプトを使用して、portの使用状況を表示する。
> netstat -ano
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2568
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1108
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 2568
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1040
TCP 0.0.0.0:4352 0.0.0.0:0 LISTENING 4788
TCP 0.0.0.0:4353 0.0.0.0:0 LISTENING 4788
TCP 0.0.0.0:4355 0.0.0.0:0 LISTENING 4788
TCP 0.0.0.0:12345 0.0.0.0:0 LISTENING 224
TCP 0.0.0.0:64424 0.0.0.0:0 LISTENING 2568
TCP 127.0.0.1:1065 0.0.0.0:0 LISTENING 284
TCP 127.0.0.1:1098 0.0.0.0:0 LISTENING 4788
TCP 127.0.0.1:1098 127.0.0.1:1099 ESTABLISHED 2588
TCP 127.0.0.1:1099 127.0.0.1:1098 ESTABLISHED 2588
TCP 127.0.0.1:1112 127.0.0.1:1113 ESTABLISHED 2588
TCP 127.0.0.1:1113 127.0.0.1:1112 ESTABLISHED 2588
2. タスクマネージャの[プロセス]タブを表示させ、調べたポートのPIDと一致するイメージ名を調べる。そして、問題がなければ、プロセスを終了させる。
(今回の私のケースでは、Mozilla Thunderbirdがportを使用していたので、いったんメーラーを終了させました。)
3. JBossサービスを再起動する。
2010年7月7日水曜日
2010年7月6日火曜日
BigDecimalの計算について
JavaでBigDecimalのインスタンス生成時にコンストラクタに渡す引数によって、誤差が発生する場合がある。
- BigDecimal value = new BigDecimal(0.0);
- BigDecimal value = new BigDecimal("0.0");
for (int i = 0; i < 10; i++)
value = value.add(mod);
この場合、変数modには、BigDecimalインスタンスを生成する際に、プリミティブか文字列かに応じて、0.1または、"0.1"を設定したBigDecimalのインスタンスを生成して設定する。そして、この処理を実行すると結果は以下の通りになる。また、ここでは記述していないが、double型で同様の加算処理を行った場合の結果も添えておく。
- double : 0.9999999999999999
- BigDecimal(プリミティブ) : 1.0000000000000000555111512312578270211815834045410156250
- BigDecimal(String) : 1.0
登録:
投稿 (Atom)