Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Transactions 用于大容量数据处理的EJB事务超时_Transactions_Timeout_Ejb_Jta - Fatal编程技术网

Transactions 用于大容量数据处理的EJB事务超时

Transactions 用于大容量数据处理的EJB事务超时,transactions,timeout,ejb,jta,Transactions,Timeout,Ejb,Jta,我的应用程序从一个DB表中读取50k到100k条记录,并通过应用各种公式在不同阶段处理这些记录。我们正在使用bean管理的事务。我们需要创建/更新/删除许多表中的数据。 这一过程始于 EJB定时器 通过与另一个表连接从一个表读取数据(约50K记录数据),并将数据插入临时表(数据临时存储) 读取临时数据,对该数据应用一些公式,并在多个表中插入数据 数据将从此表复制到新表,并连接BI报告的其他表 我没有在用户事务中设置任何事务超时。我正在使用IBMWebSphereAppServer 由于在公式

我的应用程序从一个DB表中读取50k到100k条记录,并通过应用各种公式在不同阶段处理这些记录。我们正在使用bean管理的事务。我们需要创建/更新/删除许多表中的数据。 这一过程始于

  • EJB定时器
  • 通过与另一个表连接从一个表读取数据(约50K记录数据),并将数据插入临时表(数据临时存储)
  • 读取临时数据,对该数据应用一些公式,并在多个表中插入数据
  • 数据将从此表复制到新表,并连接BI报告的其他表
我没有在用户事务中设置任何事务超时。我正在使用IBMWebSphereAppServer

由于在公式求值期间以及在从DB表读取数据时,数据非常大,因此我得到了事务超时

所有EJB都是无状态EJB,事务设置为BEAN

我在不同的方法中分离了业务逻辑和数据库操作

我没有使用任何事务从表中读取数据。但在没有任何事务的情况下读取数据时,仍然会出现事务超时异常


请帮助我定义更好的方法,以及为什么我获得读取数据的TX超时?

您可能会增加查询超时。为了解决您的问题,请参考答案。通常,您在persistence.xml文件中设置了默认超时,但有时当记录数量增加太多时,这是不够的,我在这些情况下使用了ETL技术。。。如果您想使用它,这只是一个建议:)