Artikel

 
Dezember 2008 | Artikel

Axis2 und Spring zusammenbringen Fortsetzung, Teil 2

Teil 1   Teil 2   Teil 3   Teil 4   

Axis2 und Spring

Wenn der Funktionsumfang von Spring-WS also nicht ausreicht, oder man Spring-Anwendungen mit einer Web-Service-Schnittstelle ausstatten möchte, oder umgekehrt in einer auf Axis2 basierenden Web-Service-Anwendung Spring Beans einhängen möchte, dann braucht man Integrationsoptionen. Und die gibt es. Axis2 selbst bringt Erweiterungen, mit denen man einen externen Application Context in Axis2 einhängen kann. Das Ganze gibt es auch gleich in zwei Geschmacksrichtungen: Entweder man bettet Axis2 in eine bestehende, Spring-basierende Webanwendung mit ein und zapft den Application Context dieser Webanwendung an, oder man erzeugt ein AAR (Axis-Archiv), das den Application Context, die Spring Beans und die Web-Service-Konfiguration enthält. Mit diesen beiden Möglichkeiten ist man sehr schnell in der Lage, bestehende Spring Beans mit einer auf Axis2 basierenden Web-Service-Schnittstelle auszustatten. Axis2 läuft dabei jedoch immer unabhängig von Spring. Wer eine noch tiefere Integration mit dem Spring Framework wünscht, der kann schließlich mit dem separat verfügbaren Addon "Web Service Framework for Spring" Axis2 konfigurieren und hochfahren.

Wie Spring Beans mit Axis2 sprechen

Im Zuge der Entwicklung von Axis2 1.1 wurde die Spring-Integration realisiert. Hierfür wurde das Konzept der so genannten "Service Object Suppliers" eingeführt, auf dem die Spring-Integration beruht. Wie man in Abbildung 1 erkennen kann, wird eine Web-Service-Implementierung immer durch einen Message Receiver aufgerufen. Dank der offenen Architektur von Axis2 ist es sogar möglich, eigene Message Receiver zu entwickeln. In der Praxis ist es so, dass Axis2 bereits die wichtigsten Message Receiver mitbringt: einen für reine XML- und nachrichtenorientierte Services, einen für POJOs, einen für JAX-WS und so weiter. Warum hat man dann nicht einfach so etwas wie einen SpringBeanMessageReceiver hinzugefügt? Die Antwort liegt auf der Hand: Bei der Integration wollte man unabhängig von einer Message-Receiver-Implementierung bleiben, weil es bei der Spring-Integration lediglich darum geht, einen beliebigen Message Receiver mit einer Service-Implementierung (in diesem Fall eben Spring Beans) zu versorgen. Und genau hier kommen die Object Suppliers ins Spiel. Dabei handelt es sich nämlich lediglich um eine dünne Schicht (Abb. 1), die auf die Message Receiver aufsetzt und einen beliebigen Message Receiver mit einem Serviceobjekt versorgt.

Durch Verwendung von Object Suppliers kann man zum Beispiel den bestehenden RPCMessageReceiver mit einem EJB versorgen oder über Codegenerierung erzeugte, generische Message Receiver mit einer Spring Bean glücklich machen. Mit Axis2 1.1 wurde das Konzept der Object Suppliers also im Allgemeinen eingeführt und für die Integration mit Spring im Besonderen zwei Implementierungen des zugrunde liegenden ObjectSupplier-Interfaces ausgeliefert: SpringServletContextObjectSupplier und SpringAppContextAwareObjectSupplier.

Teil 1   Teil 2   Teil 3   Teil 4   

andere Artikel dieser Serie


Anzeige

Kommentare


Anzeige

zurück zum Seitenanfang