提高J2EE技术与.NET之间的互操作性,第3部分 - 编程入门网
的 .NET WSDL 及帮助类。清单 10 显示了与 ArrayOfProduct[] 有关的定购服务 WSDL:
清单 10. 与 ArrayOfProduct 类型有关的 .NET Order 服务 WSDL 的一部分
提高J2EE技术与.NET之间的互操作性,第3部分(5)时间:2011-03-14 IBMArrayOfProduct 模式位于 targetNamespace http://catalog.warehouse.com 之中,但它的元素引用 s0:Product,其中 s0 是 http://order.warehouse.com/service。 回忆当创建 JAX-RPC 客户端存根类时,命名空间 URI 如何映射到 Java 包名。在 com.warehouse.catalog 包下面创建了 ArrayOfProduct 类,帮助类 ArrayOfProduct_Helper 将它的 Product 字段绑定到命名空间 s0,即 http://order.warehouse.com/service 上(参见本文中的清单 11)。 这并不是好消息。Inventory 及 Order Web 服务的客户端共享 com.warehouse.catalog 包下面的相同的 ArrayOfProduct 类,但是它的类字段却绑定到特定的 Web 服务上。在本例中是 Order 服务。这正是在清单 7 中您可以看到的 SOAP 请求消息,问题的根源就在于此。 在本场景中,没有任何一方违反规范。没有理想的解决方法。首先您必须发现问题,您可以做两件事情来解决这个命名空间绑定冲突的问题: 当创建第一个客户端代理文件时,将 com.warehouse.catalog 重命名为另外一个包名。当生成第二个客户端代理文件时,两个文件将都有正确的命名空间绑定。 当生成客户端代理文件时,使用如图 1 所示相同的技术。为每个 Web 服务将 http://catalog.warehouse.com 映射到唯一的命名空间。 共享 XSD 模式是一个最佳实践,但 Web 服务程序员必须注意诸如此类的潜在的命名空间问题,并且要知道当问题发生时如何去修正它。 结束语 在本文中讨论了由 XML 命名空间冲突所导致的某些互操作性问题。然而,相互作用的 Web 服务之间的命名空间冲突没有停止于此。仍有许多其他的情况,或是微妙或是稀少,但它会发生。当有大量的 Web 服务部署在大型的公司环境中时,很难修正命名空间冲突问题。当开发 Web 服务时,最好要预见并避免不同平台上潜在的冲突。IBM WebSphere Studio Application Developer Integration Edition 也提供了强大的重置工具。如果在集成期间真的有命名冲突发生,该工具可以帮助您进行重置。 本系列的技巧讨论了大量的重要议题,可以解决跨平台 Web 服务互操作性并提供最佳实践,特别是在 XML Schema 类型的使用、命名空间及 Web 服务 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |