3

このプロジェクトでは、Cruise Control を使用して、.war ファイルの形式で Tomcat を実行しているリモート サーバーに (FTP 経由で) Web アプリケーションをビルドおよびホット デプロイします。残念ながら、「ホット」デプロイは適切に機能していないようで、デプロイのたびに Tomcat を再起動する必要があります。ビルド自体と同じように、これを自動的に魔法のように実行したいと考えています。これを行う簡単な方法はありますか?

補足: どちらのマシンも Windows を実行しています (XP またはサーバーだと思います)。

補足 2: パフォーマンスはそれほど重要ではありません。これは統合ボックスです。

4

8 に答える 8

1

TomcatはWindowsサービスとして登録されていますか?

その場合は、netstartとnetstopを使用して.batスクリプトを記述し、デプロイメントプロセスの最後のステップとしてを呼び出します。

于 2008-09-20T01:47:43.480 に答える
1

bin ディレクトリにある tomcat の起動およびシャットダウン .bat (または .sh) スクリプトを見ると、実際に java プロセスを実行して tomcat を起動するか、シャットダウンの場合は tomcat のシャットダウン ポートに接続することがわかります。 conf ディレクトリの server.xml。ビルド Ant タスクを構成して、スクリプトと同じ方法で tomcat jar を呼び出すことができます。

于 2008-09-19T22:11:19.927 に答える
1

定期的にビルドをスケジュールしている場合は、このように cron に簡単に何かを入れることができます

crontab -e

次に、午前1時30分にTomcatを停止します

30 1 * * * ./path_to_tamcat/bin/catalina.sh stop

その後、2分後に再起動します

32 1 * * * ./path_to_tamcat/bin/catalina.sh start

確かに、これは不規則な展開には最適ではありませんが、スケジュールされた再起動を使用して定期的な展開を簡単に行うことができます。

于 2008-09-19T20:25:54.033 に答える
0

reloadable = "true"

war-filesの再デプロイを有効にしません(これは自動的に機能します)。これにより、WEB-INF/classesおよびWEB-INF/lib内のファイルの変更を監視できます。これはおそらくあなたが望むものではありません。

Tomcatでのwarファイルの再デプロイがフリーズするほとんどの場合、クラスローダーのリークまでさかのぼることができました。クラスローダーのリークを参照してください:恐ろしい「java.lang.OutOfMemoryError:PermGenspace」例外

于 2008-12-05T11:52:45.867 に答える
0

どのバージョンのTomcatを使用していますか?「ホット」デプロイが機能しないように見せるために、正確にはどうなりますか?

于 2008-09-19T23:04:28.847 に答える
0

小さな Tomcat デプロイメント マネージャーを使用しているように思えます。私は基本的にそれについての経験はありません。とはいえ、私が働いている場所では 2 つの設定を使用しています。

server.xml ファイルでは、コンテキストに属性reloadable="true"があります。

WAR ファイルを適切な場所に配置するだけで、Tomcat がそれをアンパックして再ロードします。問題ありません。

調べてみると、公式の構成リファレンスには次のように書かれています。

「この機能はアプリケーション開発中に非常に便利ですが、実行時にかなりのオーバーヘッドが必要になるため、デプロイされた本番アプリケーションでの使用はお勧めできません。」

私が言ったように、私たちは問題を抱えたことはありません。当社のシステムは多数のリクエストを処理しており、問題はないようです。ただし、2 つの構成を相互にベンチマークしたことはありません。

あなたはそれを試してみたいかもしれません。少なくとも、そのようにしたときに物事をリロードするのに十分満足しているかどうかを知ることができます. パフォーマンスもチェックして、問題があるかどうかを確認できます。

時々、物事がうまくいかず、Tomcat を再起動しなければならないことがありますが、それは比較的まれです。

これが機能する場合は、スクリプトを使用して WAR を適切な場所にコピーし、機能することを確認するだけです。Tomcat を十分にデプロイすると、permgen スペースが不足するため、手動で Tomcat を再起動する必要があることに注意する必要があります。

その他のランダムな推測:

  1. 最終的な WAR の場所に直接 FTP 接続していますか? 多分Tomcatはそれを開こうとしているのが早すぎるのでしょうか?
  2. 何らかのエラー メッセージが表示されますか? 多分それは問題を追跡するのに役立つでしょうか?
  3. 他のバージョンの Tomcat を試しましたか (利用可能な場合)? 5.5 には問題がないのでしょうか (または、5.5 を使用している場合は 5.0 に問題がないのでしょうか)。たぶん、新しいポイントリリースですか?
于 2008-09-19T20:36:45.753 に答える
0

ホットデプロイが「適切に機能しない」理由についてはあまり詳しく説明していませんが、実際にリソース/WEB-INF/libがロックされていることが原因である場合 (これは珍しい原因ではありません。これmail.jarは JavaMail API でよく見られます)ContextantiResourceLocking属性を に設定するだけtrueです。/META-INF/context.xmlWeb アプリケーションがどのように見えるかの例を次に示します。

<Context antiResourceLocking="true">
    <!-- Your stuff here. -->
</Context>
于 2010-01-21T16:06:30.133 に答える