"Kann die Standard-WSDL nicht von ... initialisieren" - Warum?

9

My pom.xml enthält Folgendes, um automatisch einen Client für einen funktionierenden Webdienst mit der unten angegebenen WSDL zu generieren:

%Vor%

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 kann

Warum?

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:

  1. Übergeben Sie "null" für die WSDL-URL und verwenden Sie dann den ((BindingProvider) -Port) .getRequestContext (). put (BindingProvider. ENDPOINT_ADDRESS_PROPERTY , " Ссылка ...."), um die Adresse festzulegen.
  2. Laden Sie die WSDL als Java-Ressource und übergeben Sie ihren Speicherort in den Konstruktor Ihres Diensts .

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.

    
Withheld 22.11.2013, 20:51
quelle

2 Antworten

1

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:

%Vor%

Tipps:

  • Legen Sie die vermuteten Pfade auf bekannte ungültige Pfade fest und sehen Sie, ob Sie die gleiche Fehlermeldung erhalten.
  • Entpacke die erzeugte *.jar -Datei und überprüfe, ob die wsdl enthalten ist und wie der Pfad ist.
andrel 14.07.2014, 07:49
quelle
2

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.

    
Heri 16.02.2015 17:31
quelle

Tags und Links