Modulare Enterprise-OSGi-Anwendungen: Let’s transact!

Spring und JTA mit Atomikos

Um Spring mit JTA zu kombinieren, muss in der Spring-Konfiguration lediglich eine andere Implementierung des TransactionManagers verwendet werden. Wir verwenden nun Atomikos als JTA-Implementierung und kombinieren es mit Spring. Die Spring-Konfiguration dazu zeigt Listing 6.

Listing 6

Es wird also eine UserTransaction mit Atomikos erzeugt und anschließend eine Instanz des Spring TransactionManagers für JTA org.springframework.transaction.jta.JtaTransactionManager. Nun könnten wir also Transaktionen über mehrere Datenbanken oder auch JMS-Nachrichten fahren. Wäre da nicht nur noch unser Problem von vorhin, dass wir Eclipse Persistence nicht mit JTA zusammenkriegen. Brauchen wir zwingend JTA-Transaktionen, müssen wir eine andere JPA-Implementierung verwenden.

Resümee

Der OSGi-Enterprise-Standard gibt einen Weg für Transaktionen vor. Eclipse Gemini bietet jedoch keine Implementierung dieses Standards. Mit Atomikos TransactionEsssentials haben wir eine Implementierung des Standards kennen gelernt. Sie hat jedoch den Nachteil, dass wir eine spezielle DataSource benötigen und so die Unabhängigkeit von einem bestimmten Datenbanktreiber aufgeben müssen. So oder so gibt es derzeit keine Möglichkeit, JTA mit der von uns gewählten JPA-Implementierung Eclipse Persistence zu kombinieren. Ob mit oder ohne JTA können wir Spring nutzen, um Transaktionen deklarativ zu steuern. Das nimmt uns in der Entwicklung einiges an Arbeit ab und sorgt zudem für eine konsistente Fehlerbehandlung.

Egal, welche der vorgestellten Varianten wir zur Steuerung von Transaktionen verwenden, bleibt, wie der Schwabe sagt, ein „Geschmäckle“. Das heißt, keine Variante ist so richtig zufriedenstellend. Aus meiner Sicht wäre es wünschenswert, wenn Eclipse Gemini eine Implementierung des OSGi-Standards auf Basis von Spring anbieten würde. Bis das passiert, ist ein wenig Pioniergeist erforderlich, und jeder muss für sein Projekt entscheiden, welchen Trade-Off er in Kauf nehmen kann. Das könnten Transaktionen ohne JTA mit Spring und Eclipse Persistence sein, wenn das ausreicht. Ist das nicht genug, könnte JTA mit Atomikos und Apache Open JPA zum Einsatz kommen.

Das große Ganze

Im nächsten Eclipse Magazin werden wir die verschiedenen Teile unserer Enterprise-Anwendung zu einem großen Ganzen zusammenfügen. Unsere Anwendung erhält etwas Businesslogik, Security, Logging und eine Benutzeroberfläche. Das alles natürlich modular, zukunftssicher, einfach, schnell… Na ja, Sie wissen schon.

Jan Stamer ist Senior Software Engineer beim Sustainability Experten PE INTERNATIONAL. Er ist dort verantwortlich für weltweit führende Softwarelösungen um Produkte und Unternehmen nachhaltiger zu gestalten.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.