1

Java Swing アプリケーションをイントラネット Web サーバーにデプロイして、Java Web Start を使用してクライアント マシンからアクセスおよびダウンロードできるようにしました。すべてのアプリケーション ファイル (jar ファイル) の合計サイズは 130 MB です。

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

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

明確にするために、クライアント マシンは実際には従来のクライアントではなく、何百もの端末ユーザーにサービスを提供する Citrix サーバーです。そのため、同じアプリケーションを同時に複数回ダウンロードする状況が簡単に発生する可能性があります。

4

1 に答える 1

0

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

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

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

  1. ロック ファイルが作成される (ロックが取得される) まで、ループで待機します (進行状況インジケーターをユーザーに表示します)。
  2. 更新されたアプリ リソースをサーバーからダウンロードします (存在する場合)。javaws -import -silent http://someserver/jnlp-app.jnlp
  3. アプリケーションを開始します。javaws http://someserver/jnlp-app.jnlp
  4. ロックファイルの削除(ロック解除)
于 2012-04-16T22:42:13.373 に答える