2012-04-12 12 views
1

私たちは、Java Web Startを使用してクライアントマシンがアクセスし、ダウンロードできるように、Java SwingアプリケーションをイントラネットWebサーバーに導入しました。すべてのアプリケーションファイル(jarファイル)の合計サイズは130 MBです。同じアプリケーションの並列Java Web Startのダウンロードを防ぐにはどうすればよいですか?

これで、ユーザーがリンクをクリックしてダウンロード手順を開始すると、進行状況バーを含むダイアログが表示されます。ダウンロード中に、リンクを再度クリックすると、Java Web Startは別のダウンロード手順を開始します。その時点で、同じアプリケーションの2つの並行ダウンロード(2つの進捗ダイアログ)が行われます。最終的にダウンロードが完了すると、ユーザー(またはシステム)キャッシュには約260 MBのファイルが存在し、実際には2つの(同じ)アプリケーションがダウンロードされたことが証明されます。

同じアプリケーションの複数のダウンロードを同時に防止する方法はありますか?進行中の同じアプリケーションのダウンロードが既に検出されていることを検出できるようにJava Web Startランチャーを構成することは可能ですか?

私たちのクライアントマシンは、実際には古典的なクライアントではなく、何百もの端末ユーザーに対応しているCitrixサーバーです。したがって、同時に同じアプリケーションが複数ダウンロードされている状況は、容易に起こる可能性があります。

答えて

0

誰も回答していないので、私はそれをします。だから、いつか同じ問題を抱えている人に役立つかもしれません。私が持っている情報と私が行ったテストに基づいて、私は、Java Web Startに、すでにダウンロードしている同じアプリケーション(同じマシン上の同じユーザーから作成)に対する要求を検出するよう指示する方法がないことを発見しました。

Java Web Startは別のダウンロードプロセスを開始するので、2つの同一のアプリケーションコンテンツの2つの同じダウンロードが行われるため、不要なネットワーク、Webサーバー、およびディスクリソースが消費されます。 Citrix XenAppのような仮想アプリケーション配信システムではかなり問題になります。

私の頭に浮かぶのは、ダウンロード要求をロックファイルと同期させるカスタムJavaランチャーアプリケーションを作成することです。何かが好きです:

  1. ロックファイルが作成される(ロックが取得される)までループします(進行状況インジケータをユーザに表示します)。
  2. サーバー(もしあれば)からアプリのリソースを更新ダウンロード:javaws -import -silent http://someserver/jnlp-app.jnlp
  3. Startアプリケーション:javaws http://someserver/jnlp-app.jnlp
  4. は、ロックファイル(レリーズロック)を削除
関連する問題