开发者

EJJB Timer Transaction -XA Exception

I am using EJB 3.0 timer.When my Timeout method gets invoked,I use JPA to insert a record in one of the table.I use JPA to persist the data.I defined the persist code in a Stateless Session Bean and invoked the local interface inside my timeout method.I get the following exception when the thread comes out of the timeout method:

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

Our DB does not support XA transaction.We use WL 10.3.1.Here is the code which i do :

@EJB
private MyejbLocal myejbLocal 

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

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

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

Here is my implementation:

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

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

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

}

I don't call flush() method.

Please let me know if I have missed any?


I also faced the same issue. You need to keep your JPA entity operation in a separate session bean and it will work.

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜