设置Java Bean Timeout

时间:2013-08-19 09:00:09

标签: jpa javabeans glassfish-3 jta

因为客户端(php)在我的glassfish应用程序上通过REST运行查询时超时为5秒,我想设置glassfish java bean方法,以便他们在5秒后“放弃”。否则,该方法将继续运行,并在sql数据库中保存两次。

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。

我不想为所有事情设置全局超时。这会给长时间运行的任务带来问题。

感谢。

1 个答案:

答案 0 :(得分: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) 在方法之上。