提高J2EE技术与.NET之间的互操作性,第3部分 - 编程入门网
retail 及 http://bigbank.com/investment 有相同的域名:http://bigbank.com。因此,生成的复合数据类型及两个 Web 服务的代理将有相同的包名:com.bigbank。因为我们将两个 .NET Web 服务命名为 AccountService.asmx,并且两个不同的 Customer 结构类型有相同的名字,结果很明确:当 Application Developer 生成代理文件时,为 AccountService 客户端生成的存根文件(AccountService.java、AccountServiceLocator.java、AccountServiceSoap.java、AccountServiceSoapProxy.java 及 AccountServiceSoapStub.java)将重写先前生成的同名文件。根据后期生成的结果,现在只有一个 Customer 复合类型而不是两个。
这个命名冲突是在 .NET 及 Java 技术中命名习惯的不同而导致的。正如您所看到的,命名空间声明中的唯一 URL 仍不能完全避免命名冲突。解决方法是保证每个 Web 服务拥有唯一的域名。上面的两个 AccountService 可以使用 http://retail.bigbank.com 及 http://investment.bigbank.com/ 分别作为命名空间限定符,从而使域名唯一。 提高J2EE技术与.NET之间的互操作性,第3部分(3)时间:2011-03-14 IBM如果没有经验改变现有 .NET Web 服务中的命名空间声明的话,Application Developer 中的 Web 服务客户端代理生成向导也会提供一个选项来定义由命名空间到包的自定义映射,如图 1 所示。 图 1. 在 Application Developer 中定义由命名空间到包的自定义映射 命名空间及共享 XSD 模式 在 J2EE 技术及 .NET 中,在众多的 Web 服务中共享 XSD 模式是非常普遍的。实际上,共享 XML 模式是模块化设计及可重用性考虑的最佳实践。XML 标签:import 及 include 的使用也正是由于此目的。例如,您可以为货物仓库的 Product 类型设计模式,如清单 5 中所示: 清单 5. Product 类型
Product 类型被限定于命名空间 http://catalog.warehouse.com 之下。可以为其他 Web 服务将其导入到 WSDL 中管理库存。假设订货部门有 C# 的 Order Web 服务实现,如清单 6 中所示: 清单 6. .NET 中的定购 Service
库存部门使用库存 Web 服务进行重新进货,它必须重用相同的 Product 类型,如清单 7 中所示: 清单 7. .NET 中的库存 Service
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |