Tomcatエンジン上に実行中のサーブレットがあります。 Javaファイルをコンパイルして戦争を構築するとき、Tomcatはそれをリロードするのに不確定な時間がかかります。時には3秒、場合によっては30秒などです。現在の回避策は、tomcatを停止し、シェルスクリプトを使用して再起動することです。 autodeployとreloadableフラグをtrueに設定しましたが、確実に動作しません。どのようにこれを行うにはどのようなアイデア?ポインタも高く評価されています。これは、ubuntuのtomcat v6.0.20に関するものです。ここでTomcatに最近コンパイルされたクラス/ warファイルをリロードする方法
は私たちのconf/server.xmlファイルの抽出物である:
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<DefaultContext reloadable="true">
</DefaultContext>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
</Host>
</Engine>
我々はこの問題を回避するスクリプトで何をしているかであること - Tomcatを停止し、数秒間(スリープ)を待って、もう少し寝てから、URLリクエスト(wget $ tomcatURL)を送信してください。半分の時間が経過したらエラーメッセージが表示され、その場合はスクリプトを再実行します。エラーメッセージが表示されず、HTMLコンテンツを取得できないときは、tomcatが現在のwar/classファイルで始まっていることがわかります。デーモンを始めるには本当にお粗末な方法ですが、私は言うでしょう。 –