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)
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
ok..danke..ich versuche es mit einer neueren Jaxb-Version – Ajay