2016-09-07 1 views
0

Ich habe einen Web-Service auf Tomcat-Server bereitgestellt und haben auch eine WSDL-Datei für die gleichen generiert.Namespace Problem mit WSDL generiert von JAX WS

Später habe ich ein neues Soap-Projekt über wsdl generiert und eine Soap-Anfrage an den Server ausgeführt.

Das Problem ist hier auf der Serverseite, das Unmarshalling von XML schlägt fehl, weil das Namespacepräfix für "InputData" und "CCNA" falsch ist. Derzeit ist es cfa.

Nach Java-Code, die Namespaces für Inputdata ist xs und CCNA ist bim. Also, wenn ich die Soap-Anfrage ändern, ist Unmarshall auf der Serverseite in Ordnung.

Also, wo ist das Problem? WSDL-Generierung oder irgendwo anders in JAX WS? Ich sollte meine Soap-Anfrage nicht ändern.

SOAP Anfrage:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfa="http://cfa.ni.ctl.com/" xmlns:bim="http://www.qwest.com/XMLSchema/BIM" xmlns:xs="http://www.qwest.com/XMLSchema"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <cfa:getCFACircuit> 
     <!--Optional:--> 
     <CFACircuitRequest> 
      <bim:RequestId>123</bim:RequestId> 
      <bim:WebServiceName>123</bim:WebServiceName> 
      <bim:RequestPurpose>123</bim:RequestPurpose> 
      <bim:AuthorizationInfo> 
       <!--Optional:--> 
       <bim:ApplicationId>123</bim:ApplicationId> 
       <!--Optional:--> 
       <bim:UserId>123</bim:UserId> 
       <!--Optional:--> 
       <bim:Userid>123</bim:Userid> 
       <bim:Password>123</bim:Password> 
      </bim:AuthorizationInfo> 
      <!--Optional:--> 
      <bim:TargetSchemaVersionUsed> 
       <!--Optional:--> 
       <bim:TargetXSDName>123</bim:TargetXSDName> 
       <!--Optional:--> 
       <bim:MajorVersionNumber>123</bim:MajorVersionNumber> 
       <!--Optional:--> 
       <bim:MinorVersionNumber>123</bim:MinorVersionNumber> 
      </bim:TargetSchemaVersionUsed> 
      <!--Optional:--> 
      <bim:TimeOutSecond>123</bim:TimeOutSecond> 
      <!--Optional:--> 
      <bim:SendTimeStamp>123</bim:SendTimeStamp> 
      <cfa:InputData> 
       <cfa:CCNA>123</cfa:CCNA> 
       <xs:CableKey> 
        <!--Optional:--> 
        <xs:LowUnit>123</xs:LowUnit> 
        <!--Optional:--> 
        <xs:HighUnit>123</xs:HighUnit> 
        <!--Optional:--> 
        <xs:CableId>123</xs:CableId> 
        <!--Optional:--> 
        <xs:CableSubPath>123</xs:CableSubPath> 
        <!--Optional:--> 
        <xs:CLLIALocation>123</xs:CLLIALocation> 
        <!--Optional:--> 
        <xs:CLLIZLocation>123</xs:CLLIZLocation> 
       </xs:CableKey> 
      </cfa:InputData> 
     </CFACircuitRequest> 
     </cfa:getCFACircuit> 
    </soapenv:Body> 
</soapenv:Envelope> 

XML Anmerkung für Eingangsdaten auf dem Server:

@XmlElement (name = "Inputdata", namespace = "http://www.qwest.com/XMLSchema" required = true)

+0

Ich weiß nicht, warum mit dieser Annotation die InputData in der WSDL nicht in den entsprechenden Namespaces ... vielleicht ein Problem mit Jaxb-Version? kannst du es mit einem neueren probieren? Tut mir leid, aber ich weiß nicht, wie ich hier helfen soll. Ich werde auch meine Antwort entfernen, da sie Ihr Problem nicht löst. – albciff

+0

ok..danke..ich versuche es mit einer neueren Jaxb-Version – Ajay

Antwort

0

Ich würde vermuten, dass Ihre XML-Anfrage falsch ist. Bitte versuchen Sie zuerst Ihre Anfrage gegen das XML-Schema zu validieren.

Es spielt keine Rolle, welches Namespace-Präfix Sie verwenden, aber Sie müssen sicherstellen, dass die XML-Elemente mit dem entsprechenden Namespace übereinstimmen.

+0

Die XML-Anfrage ist korrekt. Ich habe versucht, die 2 Tags in Fettschrift zu machen. – Ajay

+0

Ajay

+0

sind Sie darauf hin? – Ajay

0

Ajay, Ihre Anmerkung ist:

@XmlElement (name = "Inputdata", namespace = "http://www.qwest.com/XMLSchema" required = true)

Aber in Ihrer XML-Anforderung das Element Inputdata auf den Namespace gehört "http://cfa.ni.ctl.com/".

Sie müssen die Annotation beheben.

+0

Aber dieser Code wird automatisch aus der Schemadatei generiert. Ich schließe die JAR-Datei in mein Serverpaket ein. Wie überschreibe ich den Namespace in meinem Code? – Ajay