簡體   English   中英

在Servlet或任何其他J2EE技術​​中調用Java獨立程序

[英]Invoking Java standalone program in servlet or any other J2EE technologies

這就是我需要的。我有一個用戶界面,用戶可以根據輸入的(上傳的)數據上傳文件並提取報告。 由於有大量數據要提取,因此一旦用戶上載數據,我想從Servlet控件中退出,這樣用戶就不必在同一頁面上等待,並且可以將該控件傳遞給Java通過使用戶有可能從事其他工作而成為獨立的程序。 因此,一旦控件進入Java獨立服務器,它將調用后端sps並從中提取一個摘要,並將其放置在服務器上的文件路徑中。

用戶指導具有從UI進行檢查摘要是否可供他們下載的功能。

所以這里的問題是,實現這一目標的最佳實踐或可能性是什么? 請讓我知道您的寶貴意見。

謝謝!

如果您在Java EE環境中運行,我建議讓servlet將任務分派到JMS隊列,並使用消息驅動的bean進行(異步)處理。

就像其他人建議的那樣,讓上載servlet將用戶重定向到一些啟用了Ajax的頁面將對后端進行輪詢以完成工作,這將是微不足道的。

如果您不在EE環境中,則可以創建一個獨立的(線程池)應用程序以從隊列中使用並提供信令。 通過數據庫(無論如何我假設結果都放在數據庫中)。 Spring框架提供了非常強大的功能並將其綁定在一起。

但是實際上,有幾種免費/開源的EE容器 ,從輕量級到企業級,因此無需自己構建必要的東西。

干杯,

這很容易。

  • Servlet類中只有一個線程。

  • 運行線程(線程將提取數據等)。

  • 在將線程重定向用戶運行到頁面后,您可以在該頁面上自動刷新或顯示完成提取的內容。(您提到可以找到它)

如果您不能使用消息驅動的bean,則可以讓servlet將數據上傳到文件系統上的某個位置,並在DB表中記錄一行以表明有一項要處理的作業。

然后,您可以使用獨立程序輪詢作業,處理數據並在完成時更新數據庫行(包括失敗原因等)。

最后,您可以使用ajax請求從UI輪詢作業的狀態。

允許用戶在執行其他操作時建立要處理的數據作業隊列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM