2017-01-03 7 views
1

Tomcatサーバーにインストールされているアプリケーションを自動更新するソリューションを探しています。Tomcatアプリケーションの自動更新

私がコーディングしているアプリケーションは、新しいバージョンが公開されているサーバーで利用可能になったときに更新する必要があります。 クライアントは自身のサーバーにwarファイルをインストールすることが重要です。

クライアントに、必要に応じてwarファイルを更新するためにcronタスクによって呼び出されるプログラムを作成することを要求せずに、どうすればできますか?

目標は、すべてのクライアントが同じバージョンのアプリケーションを使用することです。

+0

お客様のtomcatにアクセスできますか?中央サーバーからtomcat管理ツールを使用して新しい戦争を展開できます。たとえば、antタスクを使用します。そうでない場合は、チェックしてデプロイする2番目のアプリケーションを作成してください。 – pedrofb

+0

安全なTomcat環境では、アプリケーションはローカルディスクのどこにでも書き込むことができません。アプリケーションがTomcatのデプロイメントディレクトリにあるファイルを作成または更新できるようにするには、かなり大きなセキュリティホールが必要です。 –

+0

同じ情報を探していて、アプリ自体から更新していましたが、あなたが提案したcrontabは私にとっては大丈夫です。とにかく3時にはtomcatサービスが再起動されるので、バージョンをテストするためのダウンロードとスクリプトを追加します。いったん準備ができてテストされたら私は答えとして投稿します。 –

答えて

0

私の意見では、リポジトリからの更新バージョンをチェックするためにデーモンスレッド[Javaプログラムはアプリケーションの一部になる]を持つことができます。使用可能になると、スレッドプログラムは最新バージョンをフェッチできます。そして、既存のものを上書きして最新のアプリケーションをインストールしてください。アプリコンテキストをリロードします。

1

managerアプリケーションが既にインストールされている場合は、アプリケーション内でこれを行うことができます。定期的なプロセス(Quartzなど)を作成して、中央サーバーに更新のためのpingを実行するだけです。

あなたのアップデートサーバーがこれを行うのに十分スマートであるならば、あなたは304 Not Modifiedレスポンスを得るでしょういずれかのように、単にIf-Modified-SinceヘッダーとHTTP GET要求を行うことができるはずまたは更新されたWARファイルと200 OKを取得します。あなたが304を取得したら、何もしないでください。

アップデートが見つかった場合は、更新されたWARファイルをメモリにダウンロードして(ストリームに)、同時にmanagerアプリケーションに接続してdeploy the new versionに接続します。