WSDL: Doppelte Typenames (Keine Verwendung möglich)

Maliko

Bekanntes Mitglied
Hoi,

ich verzweifle grad etwas an einer WSDL. Und zwar versuche ich gerade die SOAP-Schnittstelle des Cerberus-FTP-Servers anzusprechen und hab dafür in ein neues Java-Projekt aus der WSDL die WebService-Klassen via JAX:WS zu generieren. Allerdings habe ich das Problem, dass die Entwickler 2 mal den selben Namen für einen Komplexen Typen verwenden und wsimport daher immer direkt wieder abbricht. Hier einmal der Error-Log:

ant -f C:\\Entwicklung\\Java\\FTPAccessPoint wsimport-client-clean-Cerberus wsimport-client-generate
wsimport-client-clean-Cerberus:
Deleting directory C:\Entwicklung\Java\FTPAccessPoint\build\generated\jax-wsCache\Cerberus
init:
wsimport-init:
wsimport-client-Cerberus:
Created dir: C:\Entwicklung\Java\FTPAccessPoint\build\generated\jax-wsCache\Cerberus
command line: wsimport -d C:\Entwicklung\Java\FTPAccessPoint\build\generated\jax-wsCache\Cerberus -extension -Xnocompile -Xendorsed -keep -s C:\Entwicklung\Java\FTPAccessPoint\build\generated\jax-wsCache\Cerberus -encoding UTF-8 -catalog C:\Entwicklung\Java\FTPAccessPoint\catalog.xml -verbose C:\Entwicklung\Java\FTPAccessPoint\xml-resources\web-service-references\Cerberus\wsdl\Cerberus.wsdl -p ftpaccesspoint.Service -wsdllocation file:/C:/Program%20Files/Cerberus%20LLC/Cerberus%20FTP%20Server/webadmin/admin/wsdl/Cerberus.wsdl
WSDL wird geparst ...


[ERROR] Eine Klasse/Schnittstelle mit demselben Namen "ftpaccesspoint.Service.GroupList" wird bereits verwendet. Verwenden Sie eine Klassenanpassung, um diesen Konflikt zu lösen.
Zeile 458 von file:/C:/Entwicklung/Java/FTPAccessPoint/xml-resources/web-service-references/Cerberus/wsdl/ns1.xsd

[ERROR] eine weitere "GroupList" wird von hier generiert.
Zeile 361 von file:/C:/Entwicklung/Java/FTPAccessPoint/xml-resources/web-service-references/Cerberus/wsdl/ns1.xsd

[ERROR] Zwei Deklarationen verursachen eine Kollision in der ObjectFactory-Klasse.
Zeile 458 von file:/C:/Entwicklung/Java/FTPAccessPoint/xml-resources/web-service-references/Cerberus/wsdl/ns1.xsd

[ERROR] Dies ist die andere Deklaration.
Zeile 361 von file:/C:/Entwicklung/Java/FTPAccessPoint/xml-resources/web-service-references/Cerberus/wsdl/ns1.xsd

C:\Entwicklung\Java\FTPAccessPoint\nbproject\jaxws-build.xml:22: Error starting wsimport:
BUILD FAILED (total time: 1 second)

Ich kenne mich mit WSDL nicht wirklich aus, da ich diese bisher immer einfach nur importiert und dann einfach verwendet habe und sitz hier grad so ein wenig wie der Ochs vorm Berg. Hier die beiden Deklarationen:

XML:
<!-- Zeile 361 -->
<xsd:complexType name="groupList">
  <xsd:sequence>
    <xsd:element name="group" type="ns1:groupMember" minOccurs="0" maxOccurs="unbounded" />
  </xsd:sequence>
</xsd:complexType>

<!-- Zeile 458 -->
<xsd:complexType name="GroupList">
   <xsd:sequence>
     <xsd:element name="group" type="ns1:Group" minOccurs="0" maxOccurs="unbounded" nillable="false" />
   </xsd:sequence>
</xsd:complexType>

Die Frage die sich mir grad stellt ist ob ich da überhaupt was machen kann. Umbennen reicht auf jedem Fall nicht aus. Ich hab in der XSD die ComplexType-Names einfach durch 1 und 2 ergänzt, das scheint er aber einfach zu ignorieren. Hat jemand eine Idee was ich da machen kann? Die Originale WSDL die ich importiere liegt local im Programmverzeichnis von Cerberus, sprich ich importiere direkt eine Datei und nicht über einen Link. Ich bin da grad ein wenig überfragt.
 
K

kneitzel

Gast
WSDL ist nun einmal case sensitive und da ist groupList != GroupList. (Das ändert aber nichts daran, dass dies recht lausig ist. In einer Methode in Java würden wir ja auch nicht zwei Variablen goupList und GroupList deklarieren...)

Ich habe so einen Fall bisher nicht gehabt, aber evtl. brauchst Du dies:
https://gist.github.com/barbietunnie/69310de4366039411ad11e367542155e

Also in kurz: Dieses Auto Name Resolution scheint für solche Fälle eine valide Lösung zu sein.
 

Maliko

Bekanntes Mitglied
Danke dir schon mal. Muss mal schauen ob es das auch für Java-Ant gibt (mit Gradle und Maven bin ich ziemlich überfordert). Ich werd aber mal schauen ob ich das einsetzen kann.
 

Maliko

Bekanntes Mitglied
Ich hatte es mal versucht indem ich die WSDL einfach modifiziert habe, habe da dann aber Probleme mit der Kommunikation mit dem Server. Daher wollte ich das jetzt mal mit den Bindings ausprobieren. Nur irgendwie komme ich da grad auch nicht weiter:

Das ist mein Bindingsfile:

XML:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               jaxb:version="2.0"
              node="//xsd:complexType[@name='groupList']">
    <jaxb:class name="groupListUser" />
</jaxb:bindings>

Allerdings bekomme ich jetzt beim importen die folgende Fehlermeldung:
XPath-Auswertung von "//xsd:complexType[@name='groupList']" ergibt leeren Zielknoten

Allerdings befindet sich der Type auch nicht in der cerberus.wsdl, welche ich importiere, sondern in der ns1.xsd, welche von der WSDL geladen wird. Muss ich die ns1.xsd irgendwie dem System noch bekannt machen? Ich muss zugeben, dass ich da gerade etwas auf dem Schlauch stehe.
 

mihe7

Top Contributor
Probier mal folgendes:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               jaxb:version="2.0">
    <jxb:bindings schemaLocation="ns1.xsd" node="//xs:complexType[@name='groupList']">
        <jaxb:class name="groupListUser" />
    </jxb:bindings>
</jaxb:bindings>
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M [SOAP] - Klasse aus WSDL ausschließen Allgemeine Java-Themen 2
M Webservices: WSDL Files ohne "Service" Element? Allgemeine Java-Themen 4
G WSDL, wo hinterlegt? Allgemeine Java-Themen 3
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
J In einem Set doppelte Elemente erzeugen Allgemeine Java-Themen 4
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
L Doppelte eintraege im Stringbuffer löschen Allgemeine Java-Themen 4
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
A List<String> auf doppelte Einträge überprüfen Allgemeine Java-Themen 4
F Doppelte Datensätze zusammenführen Allgemeine Java-Themen 12
B Collections TreeSet/TreeMap, doppelte Einträge zulassen ? Allgemeine Java-Themen 11
Q "Doppelte" Einträge einer Liste entfernen Allgemeine Java-Themen 14
S Doppelte Werte in Listen,Vectoren etc suchen Allgemeine Java-Themen 2
R Vererbung - doppelte Paint-Methode Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
D Geht es auch schneller doppelte Einträge zu löschen? Allgemeine Java-Themen 23
m@nu doppelte daten im speicher? Allgemeine Java-Themen 2
F [TableModel] Doppelte einträge finden (bzw. verhindern) Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben