从JAX WS生成的wsdl的命名空间问题

时间:2016-09-07 12:32:04

标签: soap jaxb wsdl jax-ws

我在tomcat服务器上部署了一个Web服务,并且还生成了一个wsdl文件。

后来我通过wsdl生成了一个新的soap项目,并向服务器执行了soap请求。

这里的问题是在服务器端,由于“InputData”和“CCNA”的命名空间前缀错误,xml的解组失败。目前它是 cfa

根据java代码,InputData的命名空间为 xs ,CCNA为 bim 。 所以,如果我修改soap请求,unmarshall在服务器端就可以了。

那么问题出在哪里? WSDL生成或JAX WS中的其他任何位置? 我不应该修改我的肥皂请求。

SOAP请求:

<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注释是:

@XmlElement(name =“InputData”,namespace =“http://www.qwest.com/XMLSchema”,required = true)

2 个答案:

答案 0 :(得分:0)

我猜你的XML请求不正确。请尝试首先验证您对XML架构的请求。

使用哪个名称空间前缀无关紧要,但您需要确保XML元素与相应的名称空间匹配。

答案 1 :(得分:0)

阿贾伊, 你的注释是:

@XmlElement(name =&#34; InputData&#34;,namespace =&#34; http://www.qwest.com/XMLSchema&#34;,required = true)

但是在您的XML请求中,元素InputData属于命名空间&#34; http://cfa.ni.ctl.com/&#34;。

您需要修复注释。