2016-04-22 5 views
0

Ich habe XSD-Schema unten erzeugen beschreiben dieWarum Frühjahr falsche Java-Klassen aus XSD

<xs:element name="ReqStartTest"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="Version" > 
       <xs:simpleType> 
        <xs:restriction base="xs:string" /> 
       </xs:simpleType> 
      </xs:element> 
      <xs:element name="Time" > 
       <xs:simpleType> 
        <xs:restriction base="xs:string" /> 
       </xs:simpleType> 
      </xs:element> 
      <xs:element ref="tns:StartTestRequest" minOccurs="1" maxOccurs="1"></xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element>  
<xs:element name="StartTestRequest"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="Name" > 
       <xs:simpleType> 
        <xs:restriction base="xs:string" /> 
       </xs:simpleType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Nachdem ich Java-Klassen aus XSD-Datei generieren, und * .wsdl Datei empfangen. Nachdem ich * .wsdl Datei in SOAPUI getestet habe, sehe ich nur "StartTestRequest" Anfrage. Meine Frage, warum/wo sind meine Eingabedaten ("Version", "Time") in Abfrage?

Vielen Dank im Voraus.

+0

Können Sie Ihre WSDL-Datei hinzufügen? –

Antwort

0

Spring generiert nur Request/Response für die Elemente mit den Postfixes "Anfrage" und "Antwort". In diesem Fall verweisen Sie auf "StartTestRequest" von "ReqStartTest". Sie sehen also nur "StartTestRequest", das nur das Namensfeld enthält. Sie sollten "ReqStartTest" in Ihrem "StartTestRequest" erweitern oder referenzieren

Folgendes sollte gut funktionieren.

<complexType name="ReqStartTest"> 
    <sequence> 
     <element name="Version" type="string"/> 
     <element name="Time" type="string"/> 
    </sequence> 
</complexType> 

<element name="StartTestRequest"> 
    <complexType> 
     <complexContent> 
      <extension base="tns:ReqStartTest"> 
       <sequence> 
        <element name="Name" type="string"/> 
       </sequence> 
      </extension> 
     </complexContent> 
    </complexType> 
</element> 

Update:

Frühling erfordert vordefinierte Suffixe Elemente zu identifizieren, die Anfragen oder Antworten eines Webdienstes sind. Standard-Suffixe sind "Anfrage" und "Antwort". Sie können es in der Konfiguration ändern. Dieser Thread könnte Ihnen helfen: Spring-ws: How to create Wsdl from an xsd with no "Request" element

Auch dies der am nächsten ist, dass Sie ohne Änderung Suffixe erhalten:

<element name="ReqStartTestRequest"> 
    <complexType> 
     <sequence> 
      <element name="version" type="string"/> 
      <element name="time" type="string"/> 
      <element name="startTestRequest" type="tns:StartTestRequest"/> 
     </sequence> 
    </complexType> 
</element> 

<complexType name="StartTestRequest"> 
    <sequence> 
     <element name="name" type="string"/> 
    </sequence> 
</complexType> 

Ich rate Ihnen sehr Namenskonventionen zu folgen. Zum Beispiel sollte der erste Buchstabe eines variablen oder nicht konstanten Feldes in Kleinbuchstaben stehen (Camelcase-Notation).

+0

Ok ich verstehe, danke. –

Verwandte Themen