问题是这样的:在我的EJB事务中,由于处理的用户量过大,在同一个事务处理的时候,占用的CPU时间过长,系统的性能过低。现在希望是在transaction处理的过程中,比如处理了1000个用户以后,让这个transaction 睡眠一下,将cup释放出来,然后再结果起一个transaction处理。不知道能不能实现??请教各位高手。由于是第一次做EJB项目,不是很明白。

解决方案 »

  1.   

    是否希望 自己控制事务 1000条记录 提交一次?
     @Resource
        private UserTransaction userTransaction;
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public void XXX() throws Exception
        {
    userTransaction.begin();
    .......
    userTransaction.commit();
    }可以试试这样手动控制事务 其他逻辑自己设计下呗
      

  2.   

    于2楼所说的类似,由于用户数目庞大,希望以1000个用户为单位,去提交一次。1000个用户处理完的时候,让程序先sleep一下,让出cpu。然后接着再进行处理。现在的问题是由于处理的用户数量庞大,cpu一直被这个处理占用,导致系统性能很低。
      

  3.   

    还有一个问题,在transaction内部进行SLEEP处理的话,又要防止TIMEOUT 的发生。