与Axis 2 Web服务不兼容的Axis 1客户端

时间:2011-09-09 10:49:08

标签: java eclipse soap axis

我有一个带有Axis 1客户端的Axis 1 Web服务。一切都运行得很好,我从网络服务获得的数据是正确的。现在,需要将Web服务移动到使用Axis 2,我在Axis 1客户端上获取数据时遇到问题。我使用SOAPUI来查看我得到的响应格式。

使用Axis 1 Web服务,响应如下:

<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>
      <getInventoryResponse xmlns="http://webservices.com">
         <getInventory>
            <errorCode>10071</errorCode>
            <inventory xsi:nil="true"/>
         </getLastInventoryCountReturn>
      </getInventoryResponse>
   </soapenv:Body>
</soapenv:Envelope>

使用Axis 2 Web服务,响应如下:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <ns:getInventoryResponse xmlns:ns="http://webservices.com">
         <ns:return xsi:type="ax21:Inventory" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax21="http://model.com/xsd">
            <ax21:errorCode>10071</ax21:errorCode>
            <ax21:inventory xsi:nil="true"/>
         </ns:return>
      </ns:getInventoryResponse>
   </soapenv:Body>
</soapenv:Envelope>

如您所见,名为“errorCode”的元素的值为10071.我在两个Web服务上正确地在客户端上收到errorCode值。但是我有一个称为“库存”的复杂类型,我作为响应的一部分收到它(它没有出现在我上面包含的响应中,因为它需要一些时间来填充Web服务上的相应数据)。 InventoryItem包含不同数据类型(String,Calendar)的字段。我注意到,Axis 2 Web服务的响应包含<axs21> xml标记,而在Axis 1 Web服务中,它不存在。所以我假设我在客户端有一个解析问题,响应来自Axis 2 Web服务。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

显然我做错了什么。将Web服务从Axis 1移动到Axis2时,我必须重新创建我的客户端代码