簡體   English   中英

XA數據源不創建事務

[英]XA Datasource does not create a transaction

我在Wildfly 8.2中有一個XA數據源設置。 一切正常,但是當我打電話時:

sql.query("LOCK TABLE table_name IN EXCLUSIVE MODE").execute();

我得到一個異常,表明Wildfly 尚未創建事務:

org.postgresql.util.PSQLException:錯誤:LOCK TABLE只能在事務塊中使用

如果我在鎖定查詢周圍使用BEGINCOMMIT手動創建事務,那么一切都會按預期進行-但我希望Wildfly自動為我執行此操作。

Wildfly為什么不自動創建交易,我需要怎么做才能解決該問題?


作為參考,該代碼在以下方法中調用:

@RequestScoped
@Path("abc")
public class Controller {

@PUT
public Response m(Object data) {
  //HERE
}

如果希望Wildfly為您創建事務,請使用ejb Bean。例如,注入@Stateless會話Bean應該可以工作(因為您使用的是RequestScoped,而無狀態會話Bean具有相似的生命周期)

默認情況下,無狀態ejb的每種方法都會為您創建一個事務,或者如果客戶端已經具有當前事務,它將使用它。

代碼示例:

@RequestScoped
@Path("abc")
public class Controller {

    @EJB
    private YourStatelessEJB statelessBean;

    @PUT
    public Response m(Object data) {
      //HERE
      statelessBean.doSomething(data)
}

@Stateless
@LocalBean
public class YourStatelessEJB {

    @PersistenceContext
    private EntityManager em;

    public YourStatelessEJB() {

    }

    public void doSomething(Object data) {
        // here you already have a transaction, created by the ejbcontainer
        ...
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM