[英]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只能在事務塊中使用
如果我在鎖定查詢周圍使用BEGIN
和COMMIT
手動創建事務,那么一切都會按預期進行-但我希望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.