【发布时间】:2011-08-15 03:38:22
【问题描述】:
我使用 Hibernate 3.6.0 和 JBoss 6.0-Final 版本,我的数据库是 MS-SQL Server 2008。
我必须从 LDAP 服务器获取员工数据并将其插入数据库 - LDAP 条目的数量为 180,000 或更多。
我正在使用 bean 托管事务,因为使用 CMT 我的事务 从不 被提交(因为插入量很大) .
逻辑是:在一个 while 循环中,我继续使用 JPA(Hibernate)在数据库中获取和创建条目。因此,作为无状态 EJB api 的一部分,我有一系列的 fetch-create 活动。 我在处理 每 20 个 记录后调用 entityManager.flush()/clear() 和 commiting transaction。
插入 40,000 条记录后,我在 JBoss Serevr.log 中收到了以下 WARN 消息。
不确定这是否真的是警告或错误?
虽然我收到此错误,但服务器仍在运行并继续在 DB 中插入新记录。
任何人都可以建议我是否做错了什么?或者是什么导致了这个错误?
有没有办法增加 EJB 超时时间?
16:52:49,690 WARN [com.arjuna.ats.arjuna] ARJUNA-12117 TransactionReaper::check timeout for TX 0:ffff105966b8:126a:4db9fc0a:a4 in state RUN
16:52:49,691 WARN [com.arjuna.ats.arjuna] ARJUNA-12121 TransactionReaper::doCancellations worker Thread[Transaction Reaper Worker 0,5,jboss] successfully canceled TX 0:ffff105966b8:126a:4db9fc0a:a4
任何帮助将不胜感激。
【问题讨论】:
-
增加 higher
TransactionTimeout值(如 3600 秒),我不再看到此类警告。所以看起来我需要为这种工作流设置一个higher TransactionTimeout值。 -
我找到了原因,可以通过使用Api级别的注释来增加超时值。