Ich habe eine Singleton-KlasseA (container-verwaltete Transaktion), die methodA mit @Asynchronous für das Speichern/Verarbeiten großer Datenmengen in die Datenbank.MethodeA teilt die Datensätze und übergibt an Methode B mit @TransactionAttribute (TransactionAttributeType.REQUIRES_NEW) annotiert, so dass Datensätze in Chunks gespeichert und zugeordnet werden können (ich sage map, weil die Datensätze anderen Tabellen in sys zugeordnet werden, was Zeit benötigt). Dies wurde in dem Gedanken eingebaut, dass eine neue Transaktion für methodB von dem Elternteil gegeben wird, um ein einzelnes Transaktions-Rollback zu vermeiden. Nun, was passiert, während Methode B endet..MethodeA (asynch method) timeout. Ich habe versucht @ Accesstimeout (-1), so dass es wartet, bis Methode B abgeschlossen ist. aber immer noch liegt der Fehler vor. Muss ich in diesem Fall die Bean-gesteuerte Transaktion aktivieren? oder ist es noch möglich mit COntainer verwalteten Transaktion.TransactionRollback-Ausnahme während der asynchronen Verarbeitung großer Batch-Datensätze in Singleton-Bean
Antwort
Ich vermute, dass Sie Ihr Problem schon lange gelöst haben. Jedenfalls versuche ich, meinen Grund für die mögliche Ursache zu erklären.
Wie Sie wissen, wird beim Aufruf einer als REQUIRES_NEW
gekennzeichneten Methode B Ihre aktuelle Transaktion gehalten, und eine neue Transaktion wird dann der Ausführung der Methode B zugewiesen.
Nach dem Abschluss der Methode B wird die zugehörige Transaktion festgeschrieben und die Transaktion "Anhalten" setzt die Ausführung fort.
Wenn Sie jetzt einen Iterationsaufruf haben, wird die ursprüngliche Transaktion gehalten, bis die Schleife beendet ist. Haben Sie versucht, die @Asynchronous
Methode als NOT_SUPPORTED
annotieren. Übrigens, ich habe immer Message Driven Bean viel bequemer für diese Art von Funktionalität gefunden.
- 1. Speicherprobleme bei der Verarbeitung großer Textmengen vermeiden
- 2. Restful API - Verarbeitung großer Datenmengen
- 3. Verarbeitung großer Datenmengen mit Java
- 4. während der Verarbeitung laden Bild
- 5. Web-Mitarbeiter nicht genügend Arbeitsspeicher bei der Verarbeitung großer Arrays
- 6. WebApps: Vermeiden Sie Timeout bei der Verarbeitung großer Datenmengen
- 7. Optimieren der Verarbeitung und Verwaltung großer Java-Datenarrays
- 8. Grails Verbindungstimeout während großer Dateiupload
- 9. apachemq Ausnahme während der JMS-Verarbeitung
- 10. Responsive GUI während der Verarbeitung aktivieren
- 11. Appium Fehler während der Verarbeitung des Befehls
- 12. Während der Verarbeitung ist ein Fehler aufgetreten.
- 13. C#: Variable ändert Wert während der Verarbeitung
- 14. Verarbeitung großer gleichzeitiger HTTP-POSTs in ASP.NET-Anwendung
- 15. Verhindern Timeout während großer Anfrage in PHP
- 16. OK, um in asynchronen Callbacks eine schwere Verarbeitung durchzuführen?
- 17. So optimieren Sie die Speichernutzung für die Verarbeitung großer Dateien
- 18. C# - Blockieren eines Ordners vor der Änderung während der Verarbeitung
- 19. Variablenwert zu halten, während asynchronen Aufruf FB.api
- 20. Extjs Maske während langer Verarbeitung laden
- 21. Holen Sie eine andere Entität während der Verarbeitung einer Entität
- 22. JTextArea dynamisch aktualisieren, während die Verarbeitung stattfindet?
- 23. Cassandra: Aufgrund eines Fehlers während der Verarbeitung des Commit-Protokolls während der Initialisierung beendet
- 24. Implementieren der asynchronen Methode
- 25. Deaktivierung der Home-Taste in Android während der Ausführung einer asynchronen Aufgabe
- 26. Wie behalte ich eine reaktionsfähige Benutzeroberfläche bei der Verarbeitung großer Datenmengen?
- 27. Out of Memory Exception bei der Verarbeitung von großer Anzahl von Bildern
- 28. Verarbeitung - Aufnahme und zeigen Video in der Verarbeitung Skizze
- 29. Windows UWP, Anwendung stürzt während des asynchronen Anrufs ab
- 30. Textfeld verliert den Fokus während asynchronen Ajax Anruf mit jQuery