快速业务通道

提高J2EE技术与.NET之间的互操作性,第3部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
(typeof(Product))]      public string RestockProducts(Product[] products)      {        int len = products.Length;        //add to the inventory        return "Total number of products added: " + len;      }    }

提高J2EE技术与.NET之间的互操作性,第3部分(4)

时间:2011-03-14 IBM

现在有三个命名空间:Product 类型的 http://catalog.warehouse.com、Order Web 服务的 http://order.warehouse.com/service 以及 Inventory Web 服务的 http://inventory.warehouse.com/service。乍一看,似乎没有潜在的命名冲突。依据前两部分:这三个 URI 有足够的资格,每个 Web 服务的域名都是唯一的,甚至 Web 服务类名也是不同的。

但仍然会发生问题。当在清单 6 及清单 7 中的两个 Web 方法中传递数组时会发生问题。

如果您创建 J2EE 项目集成定购服务及库存服务,并定购一些产品或重新进货某些产品,只有一个 Web 服务会正确执行。由于接收到产品的空数组,所以另一个服务会悄无声息的失败掉,即使 J2EE 客户端确实为两个服务都发送了填充了产品的数组也是如此。为什么会这样?

您应该研究 J2EE 客户端与 .NET Web 服务之间的 SOAP 通信来寻找答案。

清单 8. .NET 定购服务的 SOAP 请求

<soapenv:Body>    <OrderProduct xmlns="http://order.warehouse.com/service">       <products>          <Product>            <_name xmlns="http://catalog.warehouse.com">Computer</_name>            <_qty xmlns="http://catalog.warehouse.com">10</_qty>          </Product>          <Product>            <_name xmlns="http://catalog.warehouse.com">Monitor</_name>            <_qty xmlns="http://catalog.warehouse.com">20</_qty>          </Product>       </products>    </OrderProduct> </soapenv:Body>

清单 9. .NET 库存服务的 SOAP 请求

<soapenv:Body>    <RestockProduct xmlns="http://inventory.warehouse.com/service">        <products>          <Product xmlns="http://order.warehouse.com/service">            <_name xmlns="http://catalog.warehouse.com">Computer</_name>            <_qty xmlns="http://catalog.warehouse.com">10</_qty>          </Product>          <Product xmlns="http://order.warehouse.com/service">            <_name xmlns="http://catalog.warehouse.com">Monitor</_name>            <_qty xmlns="http://catalog.warehouse.com">20</_qty>          </Product>        </products>    </RestockProduct> </soapenv:Body>

比较清单 8 及清单 9 中的 orders 数组及 products 数组的 XML 表示。在 Inventory 服务请求中的数组元素由 Order 服务的命名空间 URI 所限定-http://order.warehouse.com/service,所以 Inventory Web 服务不会看到发送给他的任何产品。

那么,问题的根源在哪里呢?问题在于 Application Developer JAX-RPC 工具生成

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号