2013-07-29 24 views
1

我正在開發部署項目。我有一個用戶界面,我通過RPC回調綁定與服務器的接口。我已經使用SmartGWT進行界面。列出進程如果存在任何進程Java

我的項目只是從一個路徑下載war文件,並將其部署到服務器。我還有一個定時器每24小時檢查一次更新的版本。 我的問題是,如何防止我的程序同時運行兩次? 首先,我雖然關於從界面禁用「執行」按鈕,但如果用戶刷新頁面,或定時器和用戶進程同時工作,這不能正常工作。然後我想要使用Singleton Pattern來解決這個問題。假設我的FTP類叫做,ftp.DownloadFile方法將啓動一個長時間運行的下載過程。如何確定下載過程或其他過程是否正在運行?我如何列出來自用戶的請求,而我已經有一個進程?

回答

1

在下載過程的初始階段,您需要在服務器端存儲一些標誌(例如布爾標誌,downloadInProgress=true)。然後,在每次頁面刷新後,通過RPC調用獲取此變量的值,並根據它顯示/隱藏UI組件。作爲此變量的存儲,您可以使用:

  • 數據庫
  • 服務器端會話
  • 一切都在服務器端有狀態avalibale ...

不要忘了指定false以downloadInProgress變量下載完成後。