Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 设置JavaBean超时_Jpa_Javabeans_Glassfish 3_Jta - Fatal编程技术网

Jpa 设置JavaBean超时

Jpa 设置JavaBean超时,jpa,javabeans,glassfish-3,jta,Jpa,Javabeans,Glassfish 3,Jta,因为在我的glassfish应用程序上通过REST运行查询时,客户端(php)有5秒的超时时间,所以我想设置glassfish java bean方法,以便它们在5秒后也“放弃”。否则,get方法将继续运行,并在sql数据库中保存两次 PHP Glassfish DB Query -- save --> saveSomething --> insert.... TIMEOUT 5

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

PHP                         Glassfish             DB

Query -- save -->           saveSomething   -->   insert....  
TIMEOUT 5 sek 
Query --> save again -->    saveSomething   -->   another insert...
是否有@Timeout注释在4900毫秒后停止该方法

我只能在太阳内部找到s.t.(glassfish)-ejb-jar.xml 4

这是正确的方法吗?如果最低配置是什么。我不知道sun-ejb-jar.xml

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


谢谢。

我通过一些手工工作找到了一个简单的解决方案。您还记得方法开始的时间,并在方法结束之前进行比较。如果花费的时间大于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) 最重要的是方法