我需要通过无状态EJB运行长时间运行的查询。
statelessEjb.callLongRunningQuery();
我正在使用Weblogic,如果查询超过30秒则会超时。
我将Set XA Transaction Timeout设置为true,将XA Transaction Timeout配置为900秒,但仍然有超时异常。
唯一有效的方法是在域级别上设置JTA设置的超时秒数。
任何想法为什么在数据源级别上设置XA Transaction Timeout都不行?
最重要的是:为什么我在读取数据时需要使用EJB的事务......?
由于
答案 0 :(得分:0)
我有一个部分答案:
最重要的是:为什么我需要一个使用EJB的事务 读数据......?
您不必使用事务,我对长时间运行的方法有相同的事务超时问题。我用了@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
注释不使用事务,从而避免超时。
更详细地说,bean代码应如下所示:
@Stateless
public class StatelessEjb {
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void callLongRunningQuery() {
...// do long time stuff
}
}