Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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
Java 通过EJB3.0、JPA进行长时间运行的查询_Java_Jakarta Ee_Ejb_Weblogic12c - Fatal编程技术网

Java 通过EJB3.0、JPA进行长时间运行的查询

Java 通过EJB3.0、JPA进行长时间运行的查询,java,jakarta-ee,ejb,weblogic12c,Java,Jakarta Ee,Ejb,Weblogic12c,我需要通过无状态EJB运行一个长时间运行的查询 statelessEjb.callLongRunningQuery(); 我使用的是Weblogic,如果查询时间超过30秒,它就会超时 我将Set XA Transaction Timeout配置为true,将XA Transaction Timeout配置为900秒,但仍然得到超时异常 唯一有效的方法是在域级别上设置JTA设置的超时秒数 知道为什么在数据源级别设置XA事务超时是不正确的吗 最重要的是:为什么我在读取数据时需要使用EJB进行事务

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

statelessEjb.callLongRunningQuery();
我使用的是Weblogic,如果查询时间超过30秒,它就会超时

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

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

知道为什么在数据源级别设置XA事务超时是不正确的吗

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


谢谢

我给你一个部分答案:

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

您不必使用事务,对于长时间运行的方法,我也遇到了相同的事务超时问题。我使用了
@TransactionAttribute(TransactionAttributeType.不受支持)
注释以不使用事务,从而避免超时

在更多细节中,bean代码应该如下所示:

@Stateless
public class StatelessEjb {

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

这与以下问题基本相同:您确定已选中
使用XA数据源接口
?为什么要将XA用于只读方法?这是一个bean管理的事务…这是一个XA驱动程序,我用它来读取这种方法中的数据,但在某些情况下,我需要插入两个dbs或发送jms+写入db。顺便问一下,你知道为什么通过会话bean用JPA读取数据需要一个事务吗?