簡體   English   中英

JBoss服務器上的Java應用程序中的“主循環”

[英]“Main loop” in a Java application on JBoss server

我正在創建一個JBoss服務器來部署一個Java應用程序,該應用程序將是一個類似REST的servlet,從請求中獲取數據並將其放入SQL數據庫。

我的主要問題:是否可以在JBoss服務器上設置一個類,該類不是基於請求運行的,而更像是一個主循環。 即只是一個循環,它將“休眠”,然后檢查一些信息,然后做某事或再次休眠。

基本上,我想做的是將一堆數據寫入文件,一旦該文件填滿到某個點,立即將其全部寫入數據庫以減少連接開銷。

我最好的猜測是,我可以使用循環編寫任何類型的類,並以所需的方式運行它(只要我的“睡眠”技術正確,就可以在同一JBoss上運行servlet)。

我不知道如何使主循環持續運行。 只是在構造函數中調用它? 我知道當前如何在服務器上運行事物的唯一方法是在web.xml中設置映射,並主動使網頁從服務器請求信息...是否有比(更好的)(讀起來容易)的服務? JBoss和Java之類的東西

在此先感謝您,我已經非常努力地尋找類似這樣的解釋,但似乎我缺少正確的關鍵字...

看看 @Startup@Singleton bean。

簡而言之,您可以編寫如下內容:

@Startup @Singleton 
public class MainLoopBean {

   @PostConstruct   
   public void mainLoop() {   
   }

}

理想情況下,您應該將此與計時器服務結合在一起。 當完成一些工作並且您想暫停時,只需安排稍后要調用的方法並返回即可。

如果連接開銷確實在影響您的性能,則可以在JBoss中更改連接池的設置。 這將使應用程序更簡單,更健壯和可擴展。 寫入一個文件不能擴展到多個並行連接。 與直接寫入數據庫相比,它還需要更多的IO。

您為什么要完全考慮循環? 為什么不在它上面設置一個JMS隊列和一個偵聽器,這樣無論何時發生什么事情,您都可以做出響應。 不需要循環,不需要特殊的鈎子,什么都不需要。

另外,如果您實際上對執行更復雜的操作感興趣,請查看Java Connector Architecture,它也為您提供了這些掛鈎。

暫無
暫無

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

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