2017-10-03 7 views
0

私はポート80でリッスンするように設定され、Windows PC上で動作するTomcat webappを顧客に提供します。その展開の一部でTomcat webappで既に使用中のポートをプログラムで検出する方法はありますか?

、MicrosoftのWorld Wide Web発行サービスはすでにTomcatと私のWebアプリケーションが既に使用中で、住所を起動したときにも、このようにポート80をリッスンしている、意図せずに実行されている:JVM_Bind例外メッセージがログに記録されますしかし、それは後の起動メッセージによって画面からスクロールされ、したがって気づかれない。

私の質問

  • 設定は、Tomcatサーバーは、このような状況の下で停止する、または
  • コード私のWebアプリケーションがこれを検出して停止するいずれかのいくつかの方法がありますか?私のWebアプリケーションでこれを検出できた場合、他のプログラムを強制終了するためにユーザーが取るべきステップについてのメッセージを記録します。うまくいえば、メッセージはコンソールに表示されたままで、画面からスクロールしないでください。
    netstat -a -o -n | findstr 0.0:80 
    taskkill /F /PID *pid* 
    

私は問題と対処方法を記述したユーザーマニュアルを持っているが、それは通常は便利ではありません。私の考えは、これがコンソール上の最後のメッセージだった場合、サポートコール時間を短縮する可能性があるということです。

答えて

2

あなたのアプリケーションは、IO(Http/Ajpコネクタ)が既に開始された後にサーブレットコンテナにデプロイされ始めます。したがって、Webアプリケーションからこれを行う方法はありません。

しかし、Tomcat起動スクリプトをバッチファイルでラップすることができます(これは、意味のあるエラーメッセージを表示し、ユーザーがEnterを押すのを待つ)。

+0

ご返信ありがとうございます。それも私の考えだった。 私は、webappが呼び出すことができるorg.apache.catalinaメソッドを知っていて、ステータスを明らかにする可能性があります。 –

+0

@KenLin:あなたはどのような「ステータス」を表示したいですか? Tomcatインスタンスで使用されるポート?これを行う簡単な方法がありますが、それは私の答えに記載された理由のためにあなたを助けません – rkosegi

+0

私のwebappは、成功するかどうかに役立つTomcatによってバインドされたポートを見つけることができます。これはorg.apache.catalinaの一部であるようです。 –

関連する問題