Совместимость веб-сервисов IBM и Axis 1.4 - PullRequest
0 голосов
/ 13 января 2012

У меня проблема с веб-сервисом.

У меня был веб-сервис, который долгое время развертывался и работал на сервере приложений WebSphere с использованием стека веб-сервисов IBM. Теперь я перенес его в glassfish v2.1.1 в стек Axis 1.4. WSDL веб-службы не изменился, чтобы обеспечить совместимость клиентов

Существует метод веб-службы, который имеет логический тип возврата. Проблема в том, что когда я вызываю мой метод, мыльный ответ по-другому в Glassfish:

Пример:

WebSphere:

   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <checkPendingOperationsResponse xmlns="http://operations.appserver.dealer.omnitel.lt">
            <checkPendingOperationsReturn xsi:type="xsd:boolean" xmlns="">0</checkPendingOperationsReturn>
         </checkPendingOperationsResponse>
      </soapenv:Body>
   </soapenv:Envelope>

Glassfish:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
      <soapenv:Body>  
         <ns1:checkPendingOperationsResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://operations.appserver.dealer.omnitel.lt">   
            <checkPendingOperationsReturn href="#id0"/>  
         </ns1:checkPendingOperationsResponse>  
         <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:boolean" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">false</multiRef> 
      </soapenv:Body>
   </soapenv:Envelope>

Проблема в том, что некоторые клиенты не могут обрабатывать значения «ложь», «истина», поскольку ранее возвращаемые значения были «1», «0».

Есть ли решение этого или обоснование, которое невозможно решить?

Заранее спасибо.

1 Ответ

0 голосов
/ 13 января 2012

Что ж, если вы все еще хотите вернуть 1 и 0 для этих значений (соответствующих истине и ложи), вы можете принудительно вернуть класс возврата, например, здесь или создать перехватчик, который изменяет его перед отправкой ответа.

...