2016-01-29 4 views
0

У меня есть следующая проблема с CXF версии 2.7.7-redhat-1, которая кажется ошибкой в ​​библиотеке. со следующей просьбой:Переопределить пространство имен с пустым пространством имен CXF (JBoss EAP 6.2.4.GA)

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <authorizePayment xmlns="http://ejb.example.org"> 
     <request xmlns=""> 
     <role xmlns:q1="http://to.homepay.example.org" xsi:type="q1:CustomerTO"> 
      <user>7C742</user> 
     </role> 
     <error> 
      <errorCode>1</errorCode> 
      <errorMessage>1</errorMessage> 
     </error> 
     <status> 
      <code>1</code> 
     </status> 
     <ordAccount>1</ordAccount> 
     <logId>374216011815223570893830967949</logId> 
     <signMethod>1</signMethod> 
     <lang>1</lang> 
     <terminalId>1</terminalId> 
     <terminalLocation>Earth</terminalLocation> 
     </request> 
    </authorizePayment> 
    </soap:Body> 
</soap:Envelope> 

Я получаю следующее сообщение об ошибке:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <soap:Fault> 
     <faultcode>soap:Client</faultcode> 
     <faultstring>Unmarshalling Error: unexpected element (uri:"http://ejb.example.org", local:"request"). Expected elements are &lt;{}request></faultstring> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

Из запроса вы можете ясно видеть, что пространство имен запроса «» переопределено от своего родителя.

Если изменить запрос:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <aa:authorizePayment xmlns:aa="http://ejb.example.org"> 
     <request xmlns=""> 
     <role xmlns:q1="http://to.homepay.example.org" xsi:type="q1:CustomerTO"> 
      <user>7C742</user> 
     </role> 
     <error> 
      <errorCode>1</errorCode> 
      <errorMessage>1</errorMessage> 
     </error> 
     <status> 
      <code>1</code> 
     </status> 
     <ordAccount>1</ordAccount> 
     <logId>374216011815223570893830967949</logId> 
     <signMethod>1</signMethod> 
     <lang>1</lang> 
     <terminalId>1</terminalId> 
     <terminalLocation>Earth</terminalLocation> 
     </request> 
    </aa:authorizePayment> 
    </soap:Body> 
</soap:Envelope> 

ВЫЗОВ МАСТЕРА работ. Мне нужен способ исправить эту проблему на стороне сервера, клиент не может быть изменен для изменения запроса.

Версии: JBoss AS выпуска: 7.3.4.Final-RedHat-1 "Янус" JBoss AS продукта: EAP 6.2.4.GA java.version: 1.7.0_91

+0

Вы когда-нибудь находили решение для этого? Я столкнулся с одной и той же проблемой. – Cork

ответ

0

Установите elementFormDefault=qualified в wsdl, генерировать артефакты и повторно развертывать приложение.

Qualified означает, что объявления локальных элементов (элемент xs: внутри xs: complexType) относятся к элементам в целевом пространстве имен схемы. Без этого они ссылаются на элементы без пространства имен.

+0

Уже пробовал, что это не проблема, как вы можете видеть из ошибки, которую он знает, чтобы ожидать неквалифицированного поля. Ожидаемые элементы: < {} запрос>, я пробовал один и тот же вызов в WAS и других версиях JBoss и всех из них работает только в этой последней версии JBoss EAP 6.2.4 –

 Смежные вопросы

  • Нет связанных вопросов^_^