2013-04-06 61 views
0

我們的產品基於Java堆棧,基本上是一個事務處理系統。我只是很想知道我們是否有任何機制,以便在程序進入無限循環時發送通知?或者可能我們可以殺死java進程本身?或更好的東西?當應用程序遇到無限循環時收到通知?

+0

與給出的信息,不...看到停止問題。對於更具體的情況,這是可能的,但你必須提供實施細節。 – bdares 2013-04-06 12:03:01

+0

是的,一般 - 沒有。也許使用日誌來看它是否一直試圖一遍又一遍地做同樣的事情? – rongenre 2013-04-06 12:05:22

+0

如果無限循環是程序的一部分,無法刪除(一個緊密的例子是在輸入設計上放慢了正則表達式的正則表達式 - 用於減緩正則表達式引擎 - 這本身並不是inf。循環,但執行時間非常長它是一個候選人被停止),那麼你可以在執行閾值 – nhahtdh 2013-04-06 12:05:45

回答

0

如果您正在使用JTA事務,則可以在應用程序服務器上設置這些事務的超時時間。如果事務需要很長時間(例如由於無限循環,而且如果事務花費的時間過長),則會拋出異常。設置閾值越高,捕獲任何不是一個無限循環。)然後我想你可以使用面向方面編程(AOP)來封裝這個異常並創建一個通知。

0

一般來說,這是無法解決的問題,請參閱Halting problem。當然,你可以設置一些超時或設置一些「命令計數器」,但然後,有一個新的地平線問題(如果程序在timeout + 1秒後停止?)

相關問題