ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
482
482
EMPFEHLEN
-
10.05.05 02:26 #1
- Registriert seit
- May 2005
- Beiträge
- 4
Hallo,
Folgende Frage:
Innerhalb der Methode einer SessionBean, die mittels EntityBeans in eine Datenbank schreibt, wurde eine NullPointerException geworfen. Dabei ist mir aufgefallen, dass der JBoss (3.2.7) eine Art selbstständiges Rollback implementiert hat, denn alle bis zum Zeitpunkt der Exception geschriebenen Zeilen wurden wieder aus der Datenbank entfernt. Ich habe keinerlei Transaktionsmanagement konfiguriert. Nun meine Frage: Führt der JBoss bei jeder Exception in einer SessionBean automatisch ein Rollback durch?
mfg
gh_80
-
10.05.05 09:49 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo,
welchen Transaction-type hast du denn im ejb-jar.xml deklariert? Steht dort Container?
Wenn ja und du sonst nichts definiert hast wird beim Aufruf deiner SessionBean Methode eine neue Transaction gestartet (könnte also implizit auf RequiresNew gesetzt sein). Arbeitest du innerhalb deiner Methode dann mit irgendwelchen EntityBeans und kommt es dort zu einer Exception rollt JBoss die Transaktion die beim Aufruf der Sessionbean Methode erzeugt wurde zurück -> alle bis dahin innerhalb dieser Transaktion erfolgten Datenmanipulationen werden dann rückgängig gemacht). Sprich, alle Manipulationen an EntityBeans innerhalb der Sessionbean Methode werden innerhalb dieser Transaktion ausgeführt.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
10.05.05 15:03 #3
- Registriert seit
- May 2005
- Beiträge
- 4
Hi Thomas,
vielen Dank für die Antwort.
Der Transaction-type ist, wie Du bereits vermutet hast, auf Container gesetzt. Da ich darüber hinaus keine weiteren Einstellungen vorgenommen habe, wird also jede Methode der SessionBean als neue Transaktion ausgeführt.
Ich habe mal zum Test im <container-transaction> Element für eine Methode dieser SessionBean das trans-attribute Required festgelegt. Trotzdem führt eine Exception auch innerhalb der anderen Methoden der SessionBean weiterhin zu einem Rollback. Ich vermute mal, dass diese weiterhin als RequiresNew ausgeführt werden.
Um nur eine Methode einer SessionBean als Transaktion zu deklarieren, ohne das die übrigen dem Attribut RequiresNew folgen, muss also für alle Methoden explizit festgelegt werden, welches trans-attribute diese verwenden sollen?
mfg
-
10.05.05 21:50 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo!
Also wenn du an einer Methode das Transaktionsattribut required hinterlegst wird verlangt, dass diese Methode innerhalb einer Transaktion ausgeführt wird. Liegt keine Transaktion um den Aufruf "herum", so wird analog zu RequiresNew eine neue Transaktion gestartet. Liegt eine Transaktion "drum herum", dann wird diese auch für den Aufruf verwendet.das trans-attribute Required festgelegt. Trotzdem führt eine Exception auch innerhalb der anderen Methoden der SessionBean weiterhin zu einem Rollback. Ich vermute mal, dass diese weiterhin als RequiresNew ausgeführt werden.
Requiresnew sagt aus, dass bei / vor dem betreten der Methode eine neue Transaktion aufgemacht werden muss. Eine dann umschließende Transaktion würde für die Zeit der neuen Transaktion ausgesetzt (suspended) werden.
Imho Ja.Um nur eine Methode einer SessionBean als Transaktion zu deklarieren, ohne das die übrigen dem Attribut RequiresNew folgen, muss also für alle Methoden explizit festgelegt werden, welches trans-attribute diese verwenden sollen?
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
Ähnliche Themen
-
Hibernate, Spring --> kein Rollback
Von yogitobi im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 2Letzter Beitrag: 24.03.09, 17:58 -
Commit und Rollback
Von zuckerbrini im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 19.11.08, 13:31 -
Transactions, Commit, Rollback...
Von jazy jaf im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 12.02.07, 15:25 -
Rollback mit CMT?
Von tobiaft im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 6Letzter Beitrag: 20.06.06, 19:21 -
Transaktionssicherheit InnoDB (Commit/Rollback)
Von Mik3e im Forum PHPAntworten: 0Letzter Beitrag: 21.10.05, 11:06





Zitieren

Login




