2016-09-07 5 views
0

У меня есть веб-служба, развернутая на сервере tomcat, а также сгенерированный файл wsdl для него.Проблема с пространством имен с wsdl, сгенерированным из JAX WS

Позже я сгенерировал новый проект мыла через wsdl и выполнил запрос на мыло к серверу.

Проблема здесь на стороне сервера, отказ от xml не выполняется из-за префикса пространства имен для «InputData» и «CCNA». В настоящее время это cfa.

Согласно коду Java, Пространство имен для InputData является хзом и CCNA является бьет. Итак, если я изменяю запрос на мыло, 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 (имя = "InputData", пространство имен = "http://www.qwest.com/XMLSchema", требуется = истина)

+0

Я не знаю, почему с этой аннотацией inputData в wsdl не находится в соответствующих пространствах имен ... может быть, проблема связана с версией jaxb? вы можете попробовать с более новым? Извините, но я не знаю, как здесь помочь. Я также удалю свой ответ, так как он не решает вашу проблему. – albciff

+0

ok..thanks..I попробовать с более новой версией jaxb – Ajay

ответ

0

Я бы предположил, что ваш запрос XML неверен. Попробуйте сначала проверить ваш запрос на XML-схему.

Не имеет значения, какой префикс пространства имен вы используете, но вам нужно убедиться, что элементы XML соответствуют соответствующему пространству имен.

+0

Запрос xml верен. Я попытался выделить 2 метки жирным шрифтом. – Ajay

+0

Ajay

+0

Вы указываете это? – Ajay

0

Аджая, вашей аннотация:

@XmlElement (имя = "InputData", пространство имен = "http://www.qwest.com/XMLSchema", требуется = истина)

Но в запросе XML элемент InputData принадлежит пространству имен "http://cfa.ni.ctl.com/".

Вам необходимо исправить аннотацию.

+0

Но этот код автогенерируется из файла схемы. Я включаю файл jar в свой серверный пакет. Как переопределить пространство имен в моем коде? – Ajay