Spring und Webservice (SOAP/WSDL)

DarthShader

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine Frage zu Webservices/WSDL/SOAP in Zusammenhang mit Spring. Ich muss eine Schnittstelle zu einem anderen Server herstellen. Ich erhalte dafür die WSDL Datei, die den Webservice (mit SOAP) beschreibt.

Muss ich nun die ganze Tour mit Apache Axis/Tomcat, den Tools um die Java Klassen zu generieren etc... durchmachen, nur um die Webservice- Schnittstelle anzusprechen, oder kann mir Spring an dieser Stelle helfen? Ich bin sehr begeistert davon, wie Spring z.B. Methoden via RMI veröffentlichen kann, das geht so schön einfach. Kann Spring ähnliches für mich tun, was Webservices mit SOAP/WSDL angeht?

Über eine Antwort würde ich mich sehr freuen

Vielen Dank für Eure Hilfe!
 
Hallo Thomas,

vielen Dank für die Links. Ist es also richtig, dass Spring-Webservices im Prinzip ein eigenes Projekt ist, und nicht einfach Teil vom Spring-Core? Ich hatte bisher immer nur in der Spring Doku gesucht, nicht aber die anderen Spring Projekte angesehen.
 
Spring WS ist ein Projekt aus dem Spring Ökosystem und setzt quasi auf dem Spring Core auf. D.h. du wirfst dir die zusätzlichen JARs in den Classpath und los gehts. Ähnlich verhält es sich mit Spriong Security usw.

Spring WS legt Wert auf den Contract-First Ansatz. Hier werden also keine WSDLs aus Javaklassen generiert. Man gibt die zu übertragenen Daten in einem XSD an und bekommt die WSDL dynamisch generiert. Das Endpointmodell ist stark an das Spring MVC Modell angeleht, gerade was das Marshalling usw. angeht.

Gruß
Ollie
 
Hallo,

Spring WS legt Wert auf den Contract-First Ansatz. Hier werden also keine WSDLs aus Javaklassen generiert. Man gibt die zu übertragenen Daten in einem XSD an und bekommt die WSDL dynamisch generiert.

was ist, wenn mir jemand anderes eine WSDL Datei schickt, um zu beschreiben, wie seine Schnittstelle aussieht? Kann Spring-WS dann damit umgehen (Ansprechen des fremden Webservices)? Ich frage das, weil Du eben meintest, Spring-WS würde die WSDL generieren.

Das Endpointmodell ist stark an das Spring MVC Modell angeleht, gerade was das Marshalling usw. angeht.

Was ist ein Endpointmodell? Leider kenne ich mich mit Spring MVC nicht aus, ich hoffe das wird mir hier nicht zum Fallstrick.
 
Ahh, seh grad, dass die Doku das Thema ein wenig umgeht. Es gibt hier ein Tutorial, was auch beschreibt, wie man eine WSDL händisch anlegt. Das Tutorial zeigt allerdings *nicht* wie man das manuell erzeugte (oder das was man bekommen hat) dann auch benutzt. Das ganze ist allerdings recht einfach: Du deklarierst einfach eine SimpleWsdl11Definition anstelle der DefaultWsdl11Definition und konfigurierst die WSDL über die entsprechende Property.

Zum Endpointmodell. Ich bezog den Vergleich auf das Programmiermodell nicht so sehr auf die Inhalte. Das Programmiermodell ist ja im groben das, dass du vor deine eigentliche Geschäftslogik einen Adapter setzt der diese Funktionalität in einer bestimmten Technologie bereitstellst. Spring MVC tut das halt über Controller und "exportiert" die Funktionalität in Richtung plain HTTP. Spring WS definiert Endpoints und exportiert die Funktionalität in SOAP (über welchen Transportmechanismus auch immer). Hier gibt es wie in MVC auch, wieder die zwei Modelle: einmal über Subklassen, einmal über Annotationen, je nach Geschmack. Hinzu kommen eben die ganzen Frameworkhilfestellungen bzgl. Marshalling/Unmarshallung, Zugriff auf Envelopeheader usw usw.

Gruß
Ollie

PS: Vielleicht kannst du ja das beispiel aus der Distro so abändern, dass es deinen Wünschen halbwegs entspricht.
 
Hallo Ollie,

vielen Dank für die Antwort, das sind sicherlich hinreichende Hinweise und Tipps für mich - jetzt heißt es erstmal wieder, Doku lesen, ausprobieren etc...

Danke!
 
Nochmale eine "doofe" nachfrage von mir: Früher habe ich ein paar Webservice Sachen immer mit Tomcat und Axis gemacht. Bedeutet Spring-WS für mich, dass ich gar keinen Tomcat laufen haben muss? Oder muss meine Spring-Anwendung trotzdem zwingend in so einem Servlet Container laufen? (ich möchte einen Webservice ansprechen sowie auch einen Webservice bereitstellen).

Danke nochmals
 

Neue Beiträge

Zurück