我有以下情形:在有一些製表使用多個EJB在從CDI一個事務保存數據管理豆
我有一個JSF對話框(Primefaces)。該對話框具有「確定」按鈕。如果點擊「確定」,所有在製表機中的數據應該保存在一個事務中。問題在於每個製表關聯(CDI)會話作用域支持bean,並且每個支持bean都具有「保存」 - 方法在無狀態EJB的幫助下保存特定製表符的數據。
我該怎麼做才能讓所有與EJB相關的代碼都保存在一個事務中。
我已經知道:
- 狀態EJB。 (此方法需要重寫狀態EJB調用並將它們委派給有狀態的EJB)。
- 寫全局無狀態EJB,節省了數據(此方法需要從每個會話bean數據)
有可能是製表(CDI)會話支持bean會在另一個地方重新使用。所以它應該是獨立的。 你認爲什麼是一個好方法?
編輯:僞代碼:
@SessionScoped
class BackingBeanTab1 {
//CDI session scoped bean for Info in Tab1
String firstname;
String lastname;
@Inject StatelessTab1DAO dao1;
public void save() {
dao1.save(..);
}
}
@Stateless
class StatelessTab1DAO {
public void save (...);
}
Similar for Tab2 ...
@SessionScoped
class BackingBeanTab2 {
//CDI session scoped bean for Info in Tab1
int debit;
@Inject StatelessTab2DAO dao1;
public void save();
}
@Stateless
class StatelessTab2DAO {
public void save (...);
}
採用這種設計,我可以重複使用的每個製表。但是,有什麼好的可能性可以保存在一個交易中?
謝謝您的回答!數據存儲在(CDI)會話範圍的bean中。我用一個例子更新了我的問題。 –
@JohnN我的回答是否足夠清晰,還是需要更多解釋? – Gas