Je voudrais annuler une transaction non pas dans un EJB mais dans un bean géré par JSF. Dans l'EJB, nous pouvons utiliser SessionContext.setRollBackOnly()
mais que puis-je utiliser dans le managed bean ?
@Stateless
@Local(AccountLocal.class)
public class AccountBean implements AccountLocal {
public void test1() throws CustomException(){
...
}
public void test2() throws CustomException(){
...
throw new CustomException();
}
public void test3() throws CustomException(){
...
}
public void all() throws CustomException(){
test1();
test2();
test3();
}
}
Dans mon haricot géré :
@SessionScoped
public class LoginBean implements Serializable{
public void test(){
try{
accountBean.test1();
accountBean.test2();
accountBean.test3();
}catch(CustomException e){
// WHAT HERE TO ROLLBACK TRANSACTION ?
}
}
}
EDIT : Comment puis-je m'assurer que si l'un des test1
, test2
o test3
les autres vont aussi reculer ?
J'ai testé ce code et accountBean.test1();
est validé même si accountBean.test2();
roule en arrière.
La solution ne serait-elle pas d'imbriquer ces 3 méthodes dans une seule méthode EJB ?
@SessionScoped
public class LoginBean implements Serializable{
public void test(){
try{
accountBean.all();
}catch(CustomException e){
...
}
}
}