ich mit den folgenden Technologien an einem Projekt arbeite: Java 1.8, EJB 3, JSF (Primefaces), Oracle, Weblogic 12.2.1Abbruch EJB Transaktion von JSF UI
Ich habe eine Schaltfläche "Speichern", die läuft eine zeitaufwendige EJB-Transaktion (lesen, aktualisieren, in Oracle schreiben).
Während die Methode ausgeführt wird, sieht der Benutzer einen modalen Dialog "Bitte warten" mit einer Schaltfläche "Abbrechen". Wie kann ich meine EJB-Transaktion abbrechen (explizites Rollback), wenn der Benutzer die Schaltfläche "Abbrechen" drückt, ohne die Benutzeroberfläche (Primefaces) zu entsperren?
Im Wesentlichen wie Rollback einer bereits laufenden Transaktion von einer anderen Methode? Die Transaktionen sind Container Managed Transactions.
Ein Ausschnitt aus meinem Code:
@Named
@ViewScoped
public class MyBean implements Serializable {
@Inject
private IFacade facade;
public String save() {
facade.save();
}
public void abortSave() {
// Cancel save transaction.
}
}
@Stateless
public class FacadeImpl implements IFacade {
@Override
public String save() {
// Transaction here, read, write, update DB.
}
}
Wie wäre es mit http://docs.oracle.com/javaee/6/api/ javax/ejb/EJBContext.html # setRollbackOnly() – Amit