2011-09-23 52 views
0

我在網絡應用開發面臨的一個技術問題瀏覽別處:保持運行的SQL程序,而在應用程序

這裏是我們的目標: 通過點擊一個按鈕,用戶啓動一個SQL/Oracle的程序大約需要5到10分鐘才能成功結束。該過程是由4個步驟:

  1. 刪除用戶...
  2. 刪除數據...
  3. 複製用戶...
  4. 複製DATAS ...

雖然程序正在運行,用戶不能啓動第二個程序,但可以完成其他任何事情(瀏覽應用程序中的其他地方,甚至關閉瀏覽器)。在任何情況下,程序都會在後臺完成。

這裏是我的技術挑戰:

點擊後,如果任何用戶訪問停留在啓動頁,我希望用戶看到執行的監控進展(4個步驟)。 因此,當用戶停留在頁面上時,我必須考慮刷新頁面。在web-app的

技術:

  • 的Java/Java EE中,Struts的,春天,甲骨文SQL9i
  • NO AJAX

你有關於如何使任何建議這行得通 ?

謝謝。

+0

可能在應用程序端的後臺/工作線程中啓動。將後臺啓動的過程記錄到表中,並且您的前端可以查詢日誌表以獲取最新狀態。 – tbone

回答

2

最簡單的方法是讓您的應用程序使用在獨立會話中運行四個步驟的DBMS_JOB包提交作業。您可以使用DBMS_APPLICATION_INFO軟件包來測試代碼,以便前端可以報告當前狀態,也可以寫入單獨的日誌表並從前端查詢該日誌表。您可以通過讓作業通過使用DBMS_LOCK程序包獲取用戶定義的鎖(這將更加健壯)或通過前端檢查來查看是否存在已提交的作業DBA_JOBS表。然後,您的前端可以自動刷新頁面並顯示當前狀態。

+0

是否有什麼特別的理由推薦'DBMS_JOB'而不是'DBMS_SCHEDULER'?我認爲後者會更適合這種事情,因爲您可以創建一個通用作業,然後根據需要運行它,而不是每次都創建一個新作業。 – Allan

+0

@Allan - 原始海報說他使用的是「Oracle SQL9i」,我假設它的意思是「Oracle 9i」,它沒有DBMS_SCHEDULER包。如果他使用的是更新版本的Oracle,我同意'DBMS_SCHEDULER'包是首選。 –

+0

非常感謝!我正在尋找關於這些Oracle可能性的文檔,並且會在之後回來查看更多詳細信息! – Clem

相關問題