EJJB定时器事务-XA异常

时间:2011-08-09 21:00:31

标签: jpa ejb-3.0 weblogic-10.x

我正在使用EJB 3.0计时器。当我的Timeout方法被调用时,我使用JPA在其中一个表中插入一条记录。我使用JPA来持久保存数据。我在无状态会话Bean中定义了持久化代码并调用了我的超时方法中的本地接口。当线程超出超时方法时,我得到以下异常:

javax.transaction.xa.XAException: JDBC driver does not support XA, hence cannot be a participant in two-phase commit.
   To force this participation, set the GlobalTransactionsProtocol attribute to LoggingLastResource (recommended) or EmulateTwoPhaseCommit for the Data Source

我们的数据库不支持XA事务。我们使用WL 10.3.1。这是我所做的代码:

@EJB
private MyejbLocal myejbLocal 

@Timeout
public void callEjb(timer) {
    try {
     myejbLocal .store();

    } catch (EntityExistsException e) {
        e.getMessage();

    } catch (Exception ex) {
        ex.getCause();
    }
}

这是我的实施:

@Override  
public void Store() {
    try {
        Mytable mytable= new Mytable (new Date());
        persist(mytable);

    } catch (EntityExistsException e) {
        e.getMessage();

    } catch (Exception ex) {
        ex.getCause();
    }

}

我不会调用flush()方法。

如果我错过了,请告诉我吗?

1 个答案:

答案 0 :(得分:1)

我也面临同样的问题。您需要将JPA实体操作保存在单独的会话bean中,它才能正常工作。

http://prasunejohn.blogspot.in/2014/02/understanding-ejb-timer-service-31.html