Teil 1: Was war, was ist und was kommen wird

Apache Axis2: Bleibt alles anders?

Marc Teufel

Apache Axis2 ist eines der am meisten eingesetzten Web Service Frameworks für Java. Der erste Artikel der vierteiligen Axis2-Serie auf Jaxenter berichtet aus der Geschichte des Projekts, erklärt, was die aktuelle Version von Axis2 kann und was in Zukunft erwartet werden darf. In den drei folgenden Teilen wird jeweils die Integration mit den aktuellen Technologien JAX-WS, Spring Framework und OSGI vorgestellt.

Axis2-Serie:


Teil 1: Bleibt alles anders?

Teil 2: Happy JAX-WS-ing!

Teil 3: Axis2 und Spring

Das Projekt Apache Axis hat eine bewegte Geschichte hinter sich. Seinen Ursprung hat Axis, wie so viele andere bekannte Projekte, bei IBM. Um den Jahrtausendwechsel hatte man sich dort – nicht ganz uneigennützig – dazu entschlossen, eine SOAP-Implementierung zu entwickeln. Mit dem bedeutungsschwangeren Namen „SOAP4J“ wurde bald die erste Version veröffentlicht, die SOAP 1.1 umsetzte und schnell weite Verbreitung fand. Schließlich wurde das Projekt der Apache Foundation übergeben und dort weiterentwickelt. Dabei bekam das Projekts einen neuen Namen: Apache SOAP.

Was war

Apache SOAP war beliebt, hatte aber auch seine Schwächen. Ein Schwachpunkt war die langsame Performance, deren Ursache in der Verwendung eines DOM-Parsers zur Verarbeitung der XML-Nachrichten lag. Aber auch die Tatsache, dass die damals brandneue Web-Service-Spezifikation JAX-RPC noch nicht unterstützt wurde, führte zu Überlegungen, mit der Version 3.0 Apache SOAP auf ein gänzlich neues Fundament zu stellen. Daher begann man, die Architektur völlig zu überarbeiten und diverse Spezifikationen umzusetzen, darunter SOAP 1.1 und bereits Teile von 1.2, WSDL 1.1, SAAJ 1.1 und natürlich JAX-RPC in seiner ersten Version.

Dem Performanceproblem versuchte man Herr zu werden, indem man auf den DOM-Parser verzichtete und stattdessen auf SAX-Parsing setzte. Zum Release der neuen Version wusste man nicht, ob das Projekt wirklich unter der Bezeichnung „Apache SOAP 3.0“ veröffentlicht werden sollte. Damals herrschte nämlich beim W3C Unsicherheit über die Bezeichnungen der Web-Service-Technologie, und gerade über den Begriff SOAP wurde heftig diskutiert. Schließlich entschied man sich bei Apache für eine erneute Umbenennung des Projekts. Der Begriff SOAP wurde aus dem Projektnamen gestrichen und durch „Axis“ ersetzt – ein Akronym, das für „Apache eXtensible Interaction System“ steht. Ironischerweise hat sich der Begriff SOAP später doch halten können, wenngleich als Name und nicht mehr als Akronym. Mit der erneuten Umbenennung in Apache Axis setzte man auch den Versionszähler zurück. Das war auch sinnvoll, da es sich bei Apache Axis quasi um eine Neuentwicklung handelte.

Apache Axis 1.x wurde in den Jahren 2003 und 2004 sehr populär und war vielleicht sogar das beliebteste Web Service Framework seiner Zeit. Die Welt der Web Services stand seitdem natürlich nicht still, sondern war stetiger Fortentwicklung und ständigem Wandel unterworfen, und so war es unvermeidbar, dass auch Axis 1.x in die Jahre kam. Neue Ideen im Bereich der XML-Verarbeitung begannen sich durchzusetzen, zum Beispiel die Entwicklung von StAX-Parsing durch BEA. Immer neue WS-Spezifikationen betraten die Bühne, und auch bei der Entwicklung von Web-Service-Anwendungen setzte ein Umdenken ein.

Viele Entwickler erkannten, dass es noch weitere Kommunikationsmuster neben dem damals beliebten Request-Response-basierten Verfahren gab. Außerdem versuchte man sich langsam aus der Interoperabilitätsfalle zu befreien, indem man sich stärker an Regelwerken wie dem Basic Profile orientierte. Dokumentenbasierte Web Services setzten sich mehr und mehr durch, und auch die schnittstellengetriebene Web-Services-Entwicklung (Stichwort Contract First) fand immer mehr Anhänger. Axis 1.x war diesen Anforderungen nur schlecht gewachsen, zu stark war der Kern noch auf Request-Response ausgelegt und mit seinem SAX-Parser war es dem modernen StAX-Verfahren deutlich unterlegen. Als wäre es nicht genug, dass man den alternativen Web Service Frameworks wie beispielsweise Celtix oder XFire (die heute im Projekt Apache CXF vereinigt sind) hinterzuhinken begann, zeichnete sich am Horizont mit JAX-WS zu allem Überfluss auch schon der Nachfolger von JAX-RPC ab – Achsenbruch?

Von Axis 1.x zu Axis2

Im September 2003 statteten ein paar findige Studenten aus Sri Lanka Axis mit einem StAX-Parser aus und erreichten eine nahezu 10-fache Performancesteigerung. Der Quelltext wurde unter der Bezeichnung „Axis-Mora“ an die Apache Foundation übergeben. In der Axis-Maillingliste gab es unterdessen heftige Diskussionen über die Zukunft von Axis, die durch Mora neuen Zündstoff fanden. Erste Ideen und Konzepte bildeten sich heraus. Als die Lanka Software Foundation, der die Studenten, die Mora entwickelt haben, angehörten, eine ordentliche Finanzspritze erhielt, konnten vier bis fünf Entwickler Vollzeit an der Umsetzung der neuen Konzepte arbeiten. So wiederholte sich das Schicksal von Axis zum zweiten Mal, denn wieder entschied man sich für ein komplettes Redesign der Software. Da viele Softwareprojekte Axis 1.x bis heute noch verwenden, wird diese Version zwar immer noch gepflegt, aber nicht mehr mit neuer Funktionalität ausgestattet. Mit den ersten Versionen der neuen Axis-Generation kristallisierte sich dann heraus, dass mit dem Entwicklungszweig Axis2 im Prinzip ein komplett neues Web Service Framework entstehen würde – und dieses hatte es in sich.

Geschrieben von
Marc Teufel
Kommentare

Schreibe einen Kommentar

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