JAX-WS-Implementierung von Axis2
Axis2 und JAX-WS haben zwar viele ähnliche Konzepte wie Nachrichten-Handler, asynchrone Kommunikation, Programmiermodell über Data-Binding oder direkt auf XML-Ebene (AXIOM), Unterstützung von MTOM, Unterstützung von WS-*-Erweiterungen, diese weichen jedoch zum Teil voneinander ab. Dementsprechend ist die Integration in Axis2 keine triviale Aufgabe und so verwundert es kaum, dass die JAX-WS-Unterstützung eine der größten Erweiterungen seit der Entstehung von Axis2 darstellt. Die Implementierung von JAX-WS befindet sich komplett in dem Projekt axis2-jaxws, das mit mehr als 250 Java-Dateien das zweitgrößte Projekt nach dem axis2-kernel in der Axis2-Familie ist. Die entsprechende axis2-jaxws-1.x.jar wird natürlich sowohl in der Client-, als auch in der Server-Umgebung benötigt. Dieses Jar-File enthält neben den zahlreichen Java-Klassen auch eine wichtige Service-Registrierung in der Datei META-INF/services/ META-INF\services\javax.xml.ws.spi.Provider. Darin wird die Klasse org.apache.axis2.jaxws.spi.Provider als Wert angegeben. Dieser Eintrag bewirkt, dass die Axis2-Implementierung von JAX-WS in der aktuellen Umgebung verwendet wird.
Leser, die mit der Axis2-Architektur vertraut sind, finden als Überblick in den beiden folgenden Grafiken die wichtigsten Klassen der JAX-WS-Implementierung in Axis2. Die blauen Kästen stellen Klassen aus dem JAX-WS-API dar, während die grünen Kästen deren Implementierung und die gelben die bestehenden Komponenten in Axis2 abbilden.
Zusammenfassung
Der vorliegende Artikel hat gezeigt, wie JAX-WS in Axis2 integriert ist und wie man es verwendet. Sowohl das "Contract First"- als auch das "Code First"-Verfahren kann bei der Entwicklung von JAX-WS-konformen Web Services in Axis2 angewendet werden. Dabei kommen für die Generierung von Web Service-Artefakten wie WSDL-Beschreibung, Stubs oder Datentypen-Klassen Werkzeuge (wsgen und wsimport) zum Einsatz, die nicht Bestandteil der Axis2-Distribution sind. Das Deployment erfolgt entweder über ein Standard-Axis-Archiv (aar) oder über einen neuen Custom-Deployer (JAXWSDeployer) direkt in Form einer Jar-Datei.
Axis2 unterstützt JAX-WS aktuell nur in der Version 2.0. Ferner muss beachtet werden, dass JAXB in Axis2 noch nicht vollständig implementiert ist. Einen vollständigen JAXB-Standard sowie das Upgrade auf JAX-WS 2.1 haben sich die Axis2-Entwickler für das nächste große Axis2-Release (1.5) vorgenommen.
Marc Teufel arbeitet als Software-Entwickler bei der hama GmbH & Co und ist dort für die Entwicklung großer Java-Anwendungen im Logistikzentrum zuständig. Er ist Autor zahlreicher Fachartikel zu Java und .NET, hat zwei Bücher zu Apache Axis publiziert und spricht regelmäßig auf Fachkonferenzen. Unter www.teufel.net ist er im Web zu erreichen.
Dapeng Wang ist ein freiberuflicher Systemarchitekt, Trainer und Buchautor. Sein Schwerpunkt liegt in Design und Implementierung von komplexen Enterprise-Applikationen mit JEE- und Web Service-Technologien sowie Anwendung von agilen Softwareentwicklungsmethoden. Neben zahlreichen Artikeln im Fachmagazin hat er mehrere Bücher über "Java Web Services" publiziert. Er hält regelmäßig Vorträge und Schulungen zu diesen Themen auf verschiedenen Konferenzen. Dapeng Wang ist unter Wang.Dapeng@gmx.net zu erreichen.














