Wir haben eine WSDL von einem Kunden bekommen und uns gebeten, den Service auf unserer Seite zu implementieren.
Die WSDL enthält 3 Port-Bindungen mit unterschiedlichen Namen und Bindungen, aber identisch <soap:adress>
--- wie folgt:
Ist eine solche WSDL mit CXF zu implementieren?
Wenn ich wsdl2java ausführe, generiert CXF 3 Java-Interfaces.
Ich habe zuerst eine einzelne Implementierungsklasse wie
ausprobiert %Vor% Aber wenn ich es aus irgendeinem Grund mit SoapUI getestet habe,
es würde nur die Port-Bindung für Interface1
freilegen,
und schien die 2 anderen zu ignorieren. Warum?
Ich habe dann stattdessen versucht, 3 verschiedene ServiceClasses zu implementieren (jede implementiert eine der Schnittstellen),
Fügen Sie dann mehrere <jaxws:endpoint>
mit identischen address
-Attributen in cxf-config.xml
Aber ich bekomme dann Deployment-Fehler:
%Vor%Irgendwelche Hinweise, wie man solche WSDL in CXF implementiert? Ist es möglich?
Wenn Sie Ihre Implementierungsklasse sehen, finden Sie diese Anmerkung,
%Vor%Dies bezieht sich nur auf Ihre Schnittstelle1. Aus diesem Grund ignoriert es bei der Bereitstellung Ruhe-2-Schnittstellenimplementierungen.
Also müssen Sie diese 3 Schnittstelle getrennt in verschiedenen Implementierungsklassen implementieren, wie Sie es nach Ihrer Erklärung getan haben. Weil in jeder Implementierungsklasse nur ein endpointInterface erlaubt ist.
%Vor%Ja, das ist möglich.
Während des Deployments in Ihrer Endpoint-Publisher-Klasse müssen Sie diese 3 Schnittstellen-Implementierungsklassenobjekte in ein Objekt einbinden und für einen einzelnen Endpunkt veröffentlichen.
Ich bin immer noch nicht klar, wie das geht, die Antwort später zu aktualisieren.
Einige nützliche Links: Es ist dieselbe Anforderung, aber wenig verwirrend.
Lesen Sie auch über JavaBeans Endpunkt-Implementierung, ich denke in diesem Fall wird es einfacher als das.