2013-08-19 33 views
0

由於在我的glassfish應用上通過REST運行查詢時,客戶端(php)的超時時間爲5秒,因此我想設置glassfish java bean方法,以便它們在5秒。否則,方法會繼續,並且會在sql數據庫中保存兩次。set Java Bean Timeout

PHP       Glassfish    DB 

Query -- save -->   saveSomething --> insert.... 
TIMEOUT 5 sek 
Query --> save again --> saveSomething --> another insert... 

是不是有@Timeout註釋可以在4900 ms後停止該方法?

我只能找到s.t.在陽光下(glassfish)-ejb-jar.xml 4

這是正確的方式,如果最小配置是什麼。我不知道sun-ejb-jar.xml。

我不想爲全部設置全局超時。這會對長時間運行的任務造成問題。

謝謝。

回答

0

我發現了一些簡單的解決方案和一些手動工作。您還記得方法開始和比較方法結束之前的時間。如果時間花費大於x,則拋出ForceTimeoutException(RuntimeException),因此所有內容都會回滾。

public void doSomethingOnDatabase() { 
    StopWatch sw = new StopWatch(); 
    ..... other programm code .... 
    if (sw.elapsed()>TIMEOUT_VALUE) { 
     throw new ForceTimeoutException(sw.elapsed()); 
    } 
} 

想要更優雅的解決方案!

類似 @MethodTimeoutForceRollback(5000) 方法的頂部。