Spring 3 steht vor der Tür - ein erster Ausblick

Seite 5: Weitere Features

Inhaltsverzeichnis

Spring 3.0 enthält noch einige weitere Neuerungen, die allerdings nicht im Fokus dieses Artikels stehen: Eine Unterstützung für Portlet 2.0 ist geplant. Dies betrifft das Spring-Portlet-MVC-Framework, das schon jetzt die Portlet-Web-Entwicklung umfassend unterstützt.

Außerdem gibt es Unterstützung für Web Conversations. Dabei handelt es sich um Abläufe in Web-Anwendungen, die mehrere Requests wie das Erfassen einer Bestellung enthalten können. Solche Prozesse sind oft so komplex, dass sie auf mehrere Webseiten zu verteilen sind. Man steht vor dem Problem, dass die Daten nicht in der HTTP-Session zu speichern sind, weil man nur einen solchen Prozess pro Benutzer zur Zeit abarbeiten kann. Weil ein Benutzer nur eine HTTP-Session hat, würden mehrere Parallelprozesse gegenseitig die Daten überschreiben. Conversations bieten einen Datenbehälter mit einer eigenen Sichtbarkeit und weitere Vorteile: So sind die Daten einer fachlichen Transaktion zunächst in der Conversation zu speichern und später in die Datenbank zu persistieren. Dadurch hält man für den gesamten Prozess zum Beispiel eine Hibernate-Session oder einen JPA-EntityManager offen, was die Probleme hinsichtlich dieser Techniken bei Web-Anwendungen behebt. Spring übernimmt mit der Unterstützung für Conversations eine Funktion, die bisher nur Spring Web Services innerhalb des Spring-Stacks angeboten hat.

Für die Unterstützung der Conversations sind Spring-Beans oder zumindest Referenzen auf sie in einer HTTP-Session zu speichern. Dazu müssen sie serialisierbar sein. Das ist in vielen Fällen so einfach nicht möglich. Aus diesem Grund enthält Spring 3.0 eine Option, um Referenzen auf Spring-Beans so zu serialisieren, dass nicht etwa die referenzierten Spring-Beans serialisiert werden, sondern lediglich Informationen über diese Referenz. Bei der Deserialisierung wird dann anhand dieser Informationen die entsprechende Spring-Bean wieder aus dem Spring-Container ausgelesen. Dadurch kann man auch Referenzen auf Spring-Beans serialisieren, die selber nicht serialisierbar sind.