2014-02-16 89 views
0

我創建了一個Java Web應用程序,要求用戶上傳ARF文件,將其轉換爲MP4並將其保存在服務器上,然後用戶發送一封包含新MP4鏈接的電子郵件文件。通過從命令行調用VB腳本進行轉換。該腳本將位於所需目錄中的所有ARF文件轉換爲MP4格式。Java Web應用程序中的併發

該應用程序運行良好,但我注意到一件事。當一個人(使用一臺計算機)運行應用程序並說文件正在轉換過程中(即用戶正在等待電子郵件)時,它不起作用。在此階段,如果另一個用戶(使用另一臺計算機)試圖同時運行該應用程序,則轉換過程會中斷並停止先前的轉換。

我試着通過運行VB腳本來測試它,等待視頻轉換並再次運行。我注意到了同樣的事情。

想知道是否有辦法讓我的應用程序併發,以便它可以獨立運行,即多個人可以同時運行它。

謝謝

回答

1

這裏的限制是VB腳本的侷限性。你可以(例如)爲每個文件生成不同的文件名,以便它可以並行工作?

如果沒有,那麼你將不得不排隊請求,然後有一些代碼一次處理隊列中的下一個請求。

+0

你是什麼意思產生不同的文件名?所以你的意思是每次運行應用程序然後調用一個不同的VB腳本需要被創建? – user3254893

+0

我認爲蒂姆意味着,爲了您的VB腳本正在做的轉換,您可以每次指定一個不同的文件名。因爲如果你總是使用相同的輸出文件名,VB腳本的兩個實例將嘗試寫入相同的文件名。 – Salil

+0

@salil是的,這正是我的意思:) –

0

這聽起來像調用VB腳本的代碼是瓶頸。我認爲文件轉換過程需要一定的時間,以便您希望在後臺線程中啓動處理並終止Java會話。我想到的第一件事就是Quartz工作框架。您可以觸發一個Quartz作業來處理和發送電子郵件,並且每個Quartz作業都在其自己的線程上運行。 http://quartz-scheduler.org/documentation