Wie werde ich in einer Stateless Session Bean informiert, dass die Transaktion zurückgesetzt werden muss? Zum Beispiel habe ich eine zustandslose EJB, die einen LuceneIndex mit einigen Geschäftsdaten aktualisiert. Die Methode wird in einer Transaktion mit mehreren EJB-Aufrufen aufgerufen. Wenn einige der späteren EJBs die Transaktion rückgängig machen, wie kann ich dann über dieses Problem informiert werden, sodass ich meinen bereits geschriebenen LuceneIndex-Eintrag zurücksetzen kann?Wie macht man Stateless-Session-Beans transaktionsbewusst?
0
A
Antwort
1
Sie können dies tun, indem Sie einen Verweis auf den aktuellen EJBContext Injektion und dann die Abfrage:
@Stateless
public class LuceneDriver {
@Resource
private EJBContext ejbContext;
public void performLuceneStuff(...) {
try {
...
// update lucene data
...
// update some business data
...
} catch (BusinessException e) {
if (ejbContext.getRollbackOnly()) {
// rollback lucene changes
}
}
}
...
}
Verwandte Themen
- 1. Wie man Datumsumwandlung macht?
- 2. Wie man Zahlenauswahldialog macht?
- 3. Wie macht man `wo nicht`?
- 4. Wie man Datumszeit so macht?
- 5. Wie man rotierendes Menü macht
- 6. Wie man Navigationstastatur zugänglich macht?
- 7. Wie man diese Zeitfensterabfrage macht?
- 8. Wie man automatischen Filtergalerieabschnitt macht?
- 9. TSQL wie man Unterberechnungen macht
- 10. Wie man spezifische "Baumansicht" macht
- 11. Wie man Checkboxen exklusiv macht?
- 12. Wie macht man UITabbar schwarz?
- 13. Wie macht man Python tragbar?
- 14. wie man dynamisches Formular macht
- 15. Wie man eine Shell macht?
- 16. Wie man Code flexibler macht
- 17. Wie man Animation glatt macht
- 18. Wie macht man Dendogramme visueller?
- 19. Wie macht man istringstream effizienter?
- 20. Wie man CORS Anfrage macht
- 21. Wie man Dirty Read macht
- 22. Wie man div bottom macht
- 23. Wie macht man Fortschritte glatt?
- 24. Wie man ziehbares Radwindow macht?
- 25. wie man jmeter Ausgabegraphen macht
- 26. Wie macht man Klassen testbarer?
- 27. Wie macht man "schöne Rundungen"?
- 28. Wie macht man zoombare Scrollview?
- 29. Wie macht man diese Nachbarfunktion?
- 30. Wie macht man diese Übung?
Aber was, wenn das Rollback von einem anderen EJB in derselben Transaktion nach meiner Methode performLuceneStuff() hat bereits fertig initialisiert wurde ? – Ralph
Es spielt keine Rolle. EJBs waren immer sehr transaktionsbewusst. Der einzige Zeitpunkt, an dem 'ejbContext.getRollbackOnly()' nicht funktioniert, ist, wenn der andere EJB eine neue Transaktion gestartet hat. Eine neue Transaktion wurde nur gestartet, wenn Sie dies explizit konfiguriert haben. –
Ich kann immer noch auf dem Schlauch stehen ... Was ich erwarte, ist ein Mechanismus zum Registrieren einer Callback-Methode, die vom Transaktionsmanager aufgerufen wird, wenn jemand anderes in der gleichen Transaktion (nicht meine Bean) fehlgeschlagen ist. Damit ich meine bereits geschriebenen Indexdateien rückgängig machen kann. – Ralph