My pom.xml
enthält Folgendes, um automatisch einen Client für einen funktionierenden Webdienst mit der unten angegebenen WSDL zu generieren:
Das Projekt baut gut auf, ohne irgendwelche Fehler oder Warnungen und ich kann die Datei myclient.wsdl
in der JAR-Datei direkt unter einem wsdl
-Ordner sehen.
Aber wenn ich versuche, das JAR zu starten:
%Vor%Es beschwert sich, dass "die Standard-WSDL nicht aus wsdl / myclient.wsdl"
initialisiert werden kannWarum?
Was fehlt mir?
Wie kann ich herausfinden, welcher Pfad das wsdl/myclient.wsdl
in pom.xml in übersetzt, wodurch sich die JAR des Clients zur Laufzeit beschweren?
Update: Mir sind einige Lösungen / Problemumgehungen bekannt, bei denen der automatisch generierte Code geändert wird:
Aber ich interessiere mich mehr für eine Lösung, die die Eingabe der richtigen Werte in den pom.xml
wie den Klassenpfad erfordert (aber leider konnte Classepath aus irgendeinem Grund nicht für mich arbeiten).
Irgendwelche Ideen, was ich dort stattdessen tippen sollte? Scheinbar ist dies ein sehr einfacher Fall, um die richtigen Pfadregeln für das jeweilige Plugin herauszufinden, aber ich vermisse etwas und ich weiß nicht, was es ist.
Ich bemerke, dass die cfx-Beispiele etwas andere Orte verwenden für sourceRoot
, wsdl
und wsdlLocation
.
Denken Sie daran, dass in der Regel Dateien in src/main/resources
im erzeugten Artefakt enthalten sind. Damit Dateien in src/main/wsdl
enthalten sind, müssen sie in der Datei pom.xml als Ressource hinzugefügt werden:
Tipps:
*.jar
-Datei und überprüfe, ob die wsdl enthalten ist und wie der Pfad ist. Der Fehler kommt vom statischen Initialisierer Ihrer generierten Serviceklasse (die mit @WebServiceClient gekennzeichnet ist). Es versucht, die WSDL-Datei als Ressource zu laden. Der Generator verwendet den Wert, den Sie mit dem Parameter wsdlLocation angegeben haben. Sie sollten das Präfix "wsdl /" weglassen:
%Vor%, da sich die WSDL direkt im Stammverzeichnis des Klassenpfadordners befindet.
BTW: Wenn Sie den Parameter & lt; wsdlLocation & gt; der Wert des Parameters & lt; wsdl & gt; wird verwendet (was in Ihrem Fall zur Laufzeit nicht korrekt ist, aber korrekt wäre, wenn die angegebene URL eine entfernte URL-Adresse wäre, d. h. direkt vom Webservice-Server abgerufen wird).
BTW2: Ihr Workaround 2 ist in der Tat +/-, was der generierte Code der Serviceklasse tut, wenn Sie den parameterlosen Konstruktor verwenden.