我需要設計一個Swing應用程序,它需要根據客戶請求發送多個作業。每個作業都運行相同的shell腳本,需要10-30分鐘才能返回一個值。 (作業不在應用程序服務器上運行或作爲Web服務運行),那麼Swing應用程序需要根據返回值決定下一步該做什麼。 我的問題是如果我可以使用JMS發送作業。如果不是,你建議我看看什麼?多線程 ....JMS可以在Java Swing App中使用
回答
多線程是這裏明顯的第一個近似值。看看SwingWorker,在後臺線程中啓動進程,監視進度(如顯示用戶是否仍在運行,甚至可以查看正在發送到控制檯的內容)等等。這些是顯而易見的選擇。
JMS會爲您解決哪些問題(並且您必須找到可在桌面上運行的輕量級JMS實現),以允許重試並確保該過程運行完成。某些需要20分鐘才能在shell腳本中運行的東西聽起來並不像它是重試的候選者,但是如果是這樣,並且重要的是消息真的能夠通過而不是讓線程死掉並且忘記進程如果用戶關閉了Java應用程序,那麼JMS是需要查看的類型。
JMS肯定可以用在基於Swing的應用程序中。如果shell腳本將由正在偵聽JMS隊列並在另一個隊列或主題上響應的服務在服務器上執行。
沒有什麼限制您在桌面應用程序中使用JMS隊列或主題。
我得到了你說的。 shell腳本不會在服務器上由服務執行。這是純粹的swing應用程序。我想我會研究多線程。謝謝! – mengmenger 2010-02-18 05:01:00
如果您想在本地系統上運行較長的任務,那麼您確實需要在Swing應用程序中使用多線程。 – orj 2010-02-19 00:41:53
JMS通常用於在進程之間和客戶端/服務器之間進行通信,而不是真的在這裏尋找什麼,除非您將它們發送到服務器進行處理,但聽起來不像那樣這裏。這聽起來像是你正在尋找一個工作隊列,例如一個swing應用程序有一個按鈕,它將一個新任務添加到隊列中(任務運行shell腳本的地方)。然後您可以擁有多個線程來執行隊列任務並運行腳本。
謝謝!我將使用多線程。 – mengmenger 2010-02-18 05:02:11
您可能 - 也可能不 - 從使用工作計劃程序(如Quartz)中獲利。也許它是過度殺傷,也許這正是你需要的。
- 1. Java Swing:可以在java swing中使用樹型表視圖嗎?
- 2. 你可以在C++中使用Java Swing嗎
- 3. 我可以在Java Swing中使用CSS嗎?
- 4. 使用java Swing發送消息給JMS隊列
- 5. 我可以使用Java Swing在網站上創建圖層嗎?
- 6. 使用java swing
- 7. 開發也可運行Google App Engine的Java Swing應用程序?
- 8. 我可以在Java Swing應用程序中使用Google Visualization API嗎?
- 9. GWT可以處理Java Swing嗎?
- 10. Java中使用Swing的GUI
- 11. 可以同時在App Engine上使用Java和Python嗎?
- 12. 是否可以在Google App Engine上使用Ruby/jRuby/Java?
- 13. 可以使用Hawtio在JBoss中瀏覽JMS消息嗎?
- 14. 在哪裏可以開始使用Java中的Swing製作動畫時鐘?
- 15. 在java中使用swing創建熱鍵
- 16. 在Java Swing中使用Instagram圖片
- 17. 在java swing中禁用jspinner
- 18. 是否可以在Java Embedded環境中運行Java/Swing應用程序?
- 19. 在Java Swing中使用JTable可視化設置<T>
- 20. 我可以使用Java中
- 21. 我們可以在SWING代碼中使用JAVAFX代碼嗎?
- 22. 我可以在Google App Engine中使用Java科學圖書館嗎?
- 23. 我可以使用Google App Engine來託管Java IRC Bot嗎?
- 24. 使用Java App Engine時可以訪問gdata api嗎?
- 25. 何時可以在Java中使用Thead.stop()?
- 26. 我可以在Google App Engine應用程序中使用facelets嗎?
- 27. 使用Java在Google App Engine中分頁
- 28. 我可以在Swing中嵌入Swing組件嗎?
- 29. Java Swing可滾動框架
- 30. 使用RGBA繪製Java Swing
感謝您的建議!我會看看SwingWorker。 – mengmenger 2010-02-18 05:00:03