我似乎無法在任何地方找到可靠的答案。我認爲我發現了一個關於JMS的問題,但它令人困惑。如何從j2ee中的長時間運行過程獲得即時響應?
0
A
回答
2
這真的取決於您使用的堆棧j2EE?它只是網絡,ejb層或兩者?如果我們在談論Web,那麼您可以使用在最新的Java EE規範中引入的異步servlet,如果您使用純EJB,那麼自然選擇是Messege驅動bean(提到的JMS)。你當然可以設計一個自定義的解決方案,例如你發送一些數據進行處理,然後j2ee應用程序自己調用你的應用程序(例如通過http請求)來通知它完成了運行的工作。可能性是無止境的,如果一個人比其他人好,總是取決於具體的情況。
+0
謝謝先生,這很合適 – volk
0
如果我正確理解你所說的是能夠開始一項任務(這將需要一些時間),然後在用戶仍然在做這些任務時迴應用戶。根據您的要求,它非常簡單,您可以使用簡單的舊Java線程來執行操作。
public class DoSillyCounting extends Thread {
private volatile int counter;
public int getCounter() { return counter; }
public run() {
while (counter < 10) {
counter ++;
try { Thread.sleep(1000); }
catch (InterruptedException ie) { }
}
}
}
在您的設置頁面,你可以這樣做:(會話是一個HttpSession)
DoSillyCounting doSillyCounting = new DoSillyCounting();
doSillyCounting.start();
session.putValue("tenSecondsCounter", doSillyCounting);
/* Here you can respond to the user while the Thread is executing */
而在你的狀態頁面,你可以這樣做:
DoSillyCounting doSillyCounting =
(DoSillyCounting)session.getValue("tenSecondsCounter");
out.print(Integer.toString(doSillyCounting.getCounter());
if (doSillyCounting.isAlive()) {
out.print("Still Working on it");
} else {
out.print("Yippee, I finished");
}
當然,這是一個相當無用的例子,當你可能有大量的請求滿足時,這個模型不是一個好主意,那麼值得看一下ThreadPool實現或者使用類似JMS的東西。
相關問題
- 1. 睡眠長時間運行的過程
- 2. 長時間運行的存儲過程對性能的影響
- 3. 無法獲得運行時響應
- 4. 長時間運行的應用程序
- 5. 工作進程響應rabbitmq消息的長時間運行過程
- 6. 如何獲得長時間運行的報告當前狀態?
- 7. 長時間運行過程vb.net
- 8. MvvmCross長時間運行過程
- 9. 從腳本中停止長時間運行的存儲過程
- 10. 通過Python運行一個長時間的運行過程Popen
- 11. Xamarin.forms - 長時間運行應用程序
- 12. 如何實現在j2ee中長時間運行的分佈式事務
- 13. 春季hibernate如何實現長時間運行的過程?
- 14. 從RTC獲得正常運行時間
- 15. 獲得程序正常運行時間
- 16. 如何在Rails中長時間運行的同步請求中生成響應?
- 17. 如何從Django視圖開始長時間運行的進程?
- 18. 如何保持長時間運行的Go程序,運行?
- 19. 如何在長時間運行的進程上運行coverage.py?
- 20. 長時間運行的存儲過程不在IIS進程中
- 21. ASP.NET長時間運行SQL Server過程 - 如何處理?消息?
- 22. 運行負載時頁面響應時間很長,但手動加載時頁面響應時間較短
- 23. ASP.Net防止長時間運行的超時過程
- 24. 我們應該如何處理使用nservicebus的長時間運行過程
- 25. 爲響應式UI細分多長時間運行的函數?
- 26. J2EE Web應用程序中的基於時間表的執行
- 27. 編程一個長時間運行的基於時間的過程
- 28. JMeter中的響應時間很長
- 29. aws codedeploy長時間運行的進程
- 30. 長時間運行的進程
您使用什麼servletcontainer/targeting? – BalusC
其理論問題比實際更多 – volk
理論上的答案是:取決於servletcontainer。 JMS確實是其中的一種方式。 – BalusC