2014-10-27 137 views
2

我維護一個用於工作的java web應用程序,最近我的任務是註銷非活動用戶。我的問題是業務用戶在應用程序上運行的某些進程可能會超出超時。例如,如果用戶執行價格重新計算,則此過程可能會比說1小時超時等更長的時間。如何從後端(Tomcat)調度Java Web應用程序進程?

我通過電子郵件向Web應用程序發送了開發人員,他們建議安排一些進程從後端運行,以便用戶不需要進行活動會話。

通過編輯web.xml爲tomcat配置超時。

如果任何人有任何關於如何做到這一點的信息/指導/方向,我將不勝感激。我是編程新手,所以用Google搜索答案是徒勞無益的。這可能是由於我缺乏技術知識或缺乏關於此主題的信息。我的猜測是前者。

謝謝

編輯:好了,所以要澄清一些事情。我有可能找出通常預計超過超時的業務流程。有了這些信息,我會自動讓這些進程在後端運行,以避免超時衝突?

+0

恭喜您的第一篇文章,歡迎使用stackoverflow。 – 2014-10-27 21:15:29

+0

Devs有一點 - 調度後端工作似乎是一個好方法。對我來說,這個任務需要一些開發,但不能在應用服務器中完全配置。 – 2014-10-27 21:20:18

+0

謝謝Krzysztof,我很害怕這個。這看起來似乎沒有解決這個問題的簡單方法。 – stackoverflow1 2014-10-27 21:26:58

回答

0

您可以安排在EJB中使用@Schedule註釋運行的方法您可以配置時間,以便該方法可以在您想要的時間自動運行。
以下doWork()方法每秒運行一次。

@Singleton 
public class TimerService {   

    @Schedule(second="*/1", minute="*",hour="*", persistent=false) 
    public void doWork(){ 
     System.out.println("Hello World!"); 
    } 
} 
+0

感謝您對Salih的快速回復。不過,我有幾個問題。首先,我沒有訪問源代碼,所以我懷疑我可以像這樣添加一個Javabean。需要向開發者詢問這一點。其次,我不知道業務用戶將運行什麼流程,或者何時我不能以可預測的方式配置解決方案。 – stackoverflow1 2014-10-27 21:12:33

0

如果我理解你是對的,你需要動態地安排一項任務,例如,讓用戶來此而不是有一個固定的時間間隔。在這種情況下,您需要使用類似Quartz的東西。如果你已經在使用Spring,請看看它的scheduler features。您也可以將其用於固定間隔任務。 EJB規範提供了一些same features,但您通常不會在Tomcat中擁有EJB支持。

+1

乍一看這可能不是一個壞主意,讓業務用戶選擇哪些進程被推送到後端。但我想這可能會成爲一個問題,用戶不選擇正確的選項,然後當應用程序「不工作」時指責IT。此外,引入像Quartz這樣的東西需要大量的文書工作/測試,這對於這個問題可能太複雜了。我會研究這個。謝謝。 – stackoverflow1 2014-10-27 21:25:06