Christoph Läubrich Freiberuflicher Diplom-Informatiker OSGi Supporter seit 2011

Java WS-Adressing Client

Will man einen Webservice nutzen, welcher WS-Addressing nutzt, stellen sich einem zunächst zwei Hürden in den Weg:
  1. wsimport gibt einige Warnungen und es wird scheinbar kein Code für den Zugriff auf den Webservice generiert
  2. hat man das überwunden begrüßt einen eine
    javax.xml.ws.soap.SOAPFaultException: MustUnderstand headers:[{http://www.w3.org/2005/08/addressing}Action] are not understood

Für Punkt 1 gibt wsimport uns praktischerweise gleich selbst einen Hinweis mit auf den Weg:

[WARNING] Service "..." does not contain any usable ports. try running wsimport with -extension switch.

Hat man diesen hinzugefügt so kriegt man zwar ebenfalls eine Menge Warnungen, dafür wird nun anstandslos der Zugriffscode generiert. Ernüchterung bringt nur die SOAPFaultException. Problem hier ist, das wir diese Extension/Feature erst im Code aktivieren müssen, am besten dort wo wir uns den Port erzeugen:

Aktivieren des WS-Addressing Features

WebService service = new WebService();
WebServiceEndpoint endpoint = service.getEndpoint(new AddressingFeature(true, true));
Der Schlüssel zum Erfolg ist hier das AddressingFeature welches in der Folge dann auch dazu führt, dass alles wie gewohnt funktioniert.
Letzte Änderung 15.07.2013