2012-04-12 37 views
1

我們已將Java Swing應用程序部署到Intranet Web服務器,以便客戶端計算機可以使用Java Web Start訪問和下載它。所有應用程序文件(jar文件)的總大小爲130 MB。如何防止並行Java Web Start下載同一個應用程序?

我們現在正面臨這個問題:當用戶點擊鏈接並啓動下載程序時,會出現一個帶有進度條的對話框。在下載時,如果他/她再次點擊鏈接,Java Web Start將啓動另一個下載過程。此時,同一個應用程序將會有兩個並行下載(兩個進程對話框)。最終,下載完成後,用戶(或系統)緩存中將會有大約260 MB文件,證明實際上有兩個(相同)應用程序已下載。

有沒有辦法阻止同時下載同一個應用程序?是否可以配置Java Web Start啓動程序,以便它可以檢測到已經下載同一應用程序的時間?

只是爲了澄清:我們的客戶機實際上並不是經典的客戶機 - 它們是爲數百個終端用戶提供服務的Citrix服務器。因此,在同一時間內同一應用程序下載多次的情況很容易發生。

回答

0

由於沒有人回答,我會這樣做,所以也許有一天它會對有同樣問題的人有所幫助。根據我所擁有的信息和我所做的測試,我發現無法指示Java Web Start檢測當前已下載的同一應用程序(由同一臺計算機上的相同用戶創建)的請求。顯然,Java Web Start將啓動另一個下載過程,因此兩個相同的應用程序內容將有兩個相同的下載 - 因此不必要地佔用網絡,Web服務器和磁盤資源。在像Citrix XenApp這樣的虛擬應用程序交付系統中,這是一個相當大的問題。

我想到的一個解決方案是創建定製的Java啓動器應用程序,它將下載請求與鎖定文件同步。例如:

  1. 等待一個循環(向用戶顯示一些進度指示器),直到創建鎖定文件(獲取鎖定)。從服務器
  2. 下載更新應用程序的資源(如果有的話):javaws -import -silent http://someserver/jnlp-app.jnlp
  3. 啓動應用程序:javaws http://someserver/jnlp-app.jnlp
  4. 刪除鎖定文件(釋放鎖)
相關問題