JAX-WS - lazy loading

sideshowbob

Mitglied
Hy!

Nach mehrstündiger Internetrecherche bin ich einfach nicht auf einen grünen Zweig gekommen deshalb probiere ich es einmal bei euch :)

Ich arbeite gerade an einem Entkopplungsprojekt. Konkret geht es darum Funktionalitäten einer native-dll als (Java) Webservice (SOAP) anzubieten.

Verwendete Technologien:

JAX-WS (Apache CXF)
Spring 2.5.x
Tomcat7


Es gibt bereits eine Java-Bibliothek, die mir die Zugriffe auf die nativen Methoden kapselt. Die Objekte die ich von der Bibliothek abrufe, möchte ich nun via SOAP-Requests zurückgeben. Soweit alles kein Problem: Soap Services geschrieben, funktionieren etc.

Mein Problem: Wenn ich von einem Objekt einen Getter aufrufe, wird wiederum die dll Schnittstelle angesprochen und der Wert zurückgegeben. => lazy loading.

Wie schaffe ich es, das lazy loading via SOAP abzubilden ohne alles selbst auszucoden? Die Objekte haben teilweise zyklische Referenzen, 1.500 Objekte... Ich könnte zwar alle Getter aufrufen und das Objekt in ein Pojo kopieren und dann über SOAP transportieren, nur dauert dann der SOAP Aufruf ziemlich lange (>1min) und es werden Daten transportiert, die der Client evtl. gar nicht benötigt.

Gibt es da irgendeine Vorgehensweise wie man an so ein Problem herangehen könnte?

Vielen Dank schon mal für die Hilfen,
lg

Ich habe
 
G

Gast2

Gast
Das ist prinzipbedingt in SOAP nicht möglich. Ich will nicht bestreiten, dass man ein derartiges Verhalten clientseitig nicht implementieren kann. Den Sinn des lazy loadings, nämlich Performancegewinn, wirst Du damit nicht erreichen. Hinzukommt dass man sich m.E. nach jeglicher Objektrelation entledigen müsste und diese clientseitig abbilden. Unterm Strich wäre das eine clientseitige JPA-Implementierung.

Lange Rede kurzer Sinn:
Wäre REST keine Alternative?
 

sideshowbob

Mitglied
vielen Dank für die Antwort. Ja, ich habe leider als Vorgabe das ganze über SOAP abzuwickeln. Nachdem es aber nur eine zwischenlösung sein soll (für zirka 1 Jahr) bin ich zu folgender Lösung übergegangen: Ich liefere bei jedem Objekt nur die primitiven Datentypen mit, wenn ein komplexer Datentyp dabei ist, gibt es ein 2. Service über den der Getter abgefragt werden kann. Ist zwar nicht unbedingt schön, funktioniert aber tadellos und auch noch in einer zufriedenstellenden Geschwindigkeit.

vielen Dank noch mal,
lg
 

Neue Themen


Oben