2010-11-23 41 views
0

狀況檢測:如何時,/爲什麼Java Web Start的啓動失敗爲用戶

大公司與通過Java Web Start啓動從Java Web應用程序幾個內部的Java應用程序。用戶登錄到Java Web應用程序並選擇一個通過Java WebStart啓動的程序。當用戶嘗試運行應用程序時,應用程序會登錄到數據庫中。一旦應用程序啓動,它會標記數據庫中成功的行。

問題:

有在用戶啓動程序的數據庫中的行,但應用程序永遠不會更新,它啓動數據庫。有跡象表明,我能想到的只有幾個原因:

  • 用戶沒有安裝JVM或者可能是正確的版本
  • 應用程序無法加載由於到Web服務器/部署的問題。 (例如不是由應用程序所需的所有.jar文件部署到Web服務器。
  • 的應用程序有與數據庫或導致它無法寫入到數據庫中的錯誤的連接問題。

目標/問題:

我想確定原因的數量。是否有無法檢測爲什麼Java Web Start App無法啓動,以便我可以看到這種情況的頻率?因爲我可能不會考慮嗎?

回答

2

Your cau看起來似乎是合理的,但我認爲他們將很難通過添加更多的代碼來排除故障,特別是前兩個原因。我認爲您將需要做一些更老式的故障排除,以便您可以複製用戶遇到的問題。

也許在網絡應用程序有一個「麻煩推出?」鏈接指出遇到前兩個問題之一的用戶可以用來報告問題,因爲他們應該能夠輕鬆檢測到應用程序未啓動。

要消除第三個原因,不要讓應用程序自己直接連接到數據庫,而只是讓它們通過HTTP與啓動JNLP的Web應用程序進行通信 - 您可以合理地確信它們具有連接性到該服務器。然後讓該Web應用程序插入適當的數據庫記錄。

1

我想建議你分別解決每個案件的解決方案。

* The user did not have JVM installed or possibly the correct version 

通常,用戶通過單擊鏈接到瀏覽器中的JNLP文件來啓動網絡啓動應用程序。嘗試檢查是否安裝了java插件。你可以用java腳本來完成它。這樣你將避免沒有Java插件的用戶啓動應用程序。我知道這不是理想的解決方案: - 可能插件沒有安裝,但桌面Java可以運行。這是「假否定」 - 用戶可能會成功運行應用程序,但隨後會卸載JVM並嘗試再次運行應用程序。

* The application failed to load due to a web-server/deployment issue. (For example not all .jars required by the application were deployed to the web server. 
* The application had a connection issue with the database or a bug that caused it to not write to the database. 

所有其他問題可以使用某種加載程序來解決。

  1. 使用bat文件/ shell腳本運行應用程序,該腳本在運行應用程序本身之前測試java在這裏。我知道web開始運行應用程序本身,但你可以在桌面上創建一個特殊的圖標,通過腳本運行你的應用程序。
  2. 使用輕量級加載程序包裝您的「大」應用程序,該加載程序檢查類路徑和(可能)數據庫連接的有效性,然後運行該應用程序。加載器可以發送失敗通知給用戶和管理員
  3. 一些瘋狂的解決方案。讓我們回到腳本。腳本可能會通知服務器端應用程序將要啓動。服務器啓動計時器任務,檢查DB中的應用程序狀態。如果應用程序沒有連接到服務器,則服務器可以通過使用「net send」(如果用戶在windows上)發送消息或如果用戶在其他平臺上發送消息來通知用戶。