通过EJB 3.0,JPA长时间运行查询

时间:2015-02-05 15:53:41

标签: java java-ee ejb weblogic12c

我需要通过无状态EJB运行长时间运行的查询。

statelessEjb.callLongRunningQuery();

我正在使用Weblogic,如果查询超过30秒则会超时。

我将Set XA Transaction Timeout设置为true,将XA Transaction Timeout配置为900秒,但仍然有超时异常。

唯一有效的方法是在域级别上设置JTA设置的超时秒数。

任何想法为什么在数据源级别上设置XA Transaction Timeout都不行?

最重要的是:为什么我在读取数据时需要使用EJB的事务......?

由于

1 个答案:

答案 0 :(得分:0)

我有一个部分答案:

  

最重要的是:为什么我需要一个使用EJB的事务   读数据......?

您不必使用事务,我对长时间运行的方法有相同的事务超时问题。我用了@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 注释不使用事务,从而避免超时。

更详细地说,bean代码应如下所示:

@Stateless
public class StatelessEjb {

  @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
  public void callLongRunningQuery() {
    ...// do long time stuff
  }
}