2

Java 6/Websphere 8.5 (Liberty プロファイル、カットダウンされた使用可能なバージョンの Websphere) でソケット バインド エラーが発生します。アプリサーバーを強制終了してすぐに再起動すると、次のようになります。

[エラー] CWWKO0221E: TCP チャネルの defaultHttpEndpoint の初期化に失敗しました。ホスト * およびポート 9988 のソケット バインドは成功しませんでした。ポートは既に使用されている可能性があります。

これは、Java または WAS が IPv6 ソケットを適切に解放していないためです。

straceしかし、ここに問題があります。 (子プロセスを追跡する -f オプションを使用して) WLP を実行すると、バインド エラーは発生しません

何が起こっている?でこれをキャッチできないのはなぜstraceですか?

を指定することでこの問題を回避できますがsoReuseAddress、ここで私が心配しているのは、なぜ/どのようにしてこの問題をキャッチするのかstrace(つまり、ばかげた運に頼らずに) であり、なぜ機能しないのですか?

4

1 に答える 1

3

特に Linux プラットフォームでは、構成にsoReuseAddrオプションを追加すると役立つ場合があります。httpEndpoint例えば、

<httpEndpoint id="defaultHttpEndpoint"
             host="*"
             httpPort="9080">
      <tcpOptions soReuseAddr="true" />
 </httpEndpoint>

サーバーの最善の試みにもかかわらず、OS がポートを解放するのに時間がかかることがあります。Liberty では、すぐにバウンスする傾向があるため、これは特に顕著です。

于 2012-12-20T14:34:32.620 に答える