快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

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

时间:2011-03-14 IBM

引言

正如 Java 包通常用来保证 Java 类,使其只能存在于不同层次的命名空间中,这样就可避免类、方法等等之间的命名冲突,XML 命名空间也是为相同的目的而服务于 Web 服务。它限定 XML 元素或属性的名字并帮助它们避免命名冲突。XML 命名空间是基于 URL 应当是全局唯一的基础之上的。然而,解释 URL 的方法及在本机代码的映射对于不同的平台来说是不同的。通常这些不同之处是微妙的,但如果开始时不解决这些的差别,到后来有可能会很难解决。

我将在下面的部分当中讨论几个与命名空间有关的互操作性问题,包括:

使用相关的 URI 引用

使用共享通用域名的唯一的 URI

数组类型中的命名空间问题

在 WSDL 中用相关 URI 引用作为命名空间声明

在命名空间声明中并没有严格禁止相关 URI 引用,但在规范中也没有为它们提供解释。如果 WSDL 文件是从 J2EE Web 服务中生成的,这通常不是一个问题,因为目标命名空间是从 Java 包名字派生而来,并且工具(例如,Java2WSDL)自动将它们与模式联系起来。但是在 Microsoft .NET Web 服务实现当中,如果您允许 .NET 框架生成 WSDL 文件,那么目标命名空间就会直接从您在代码中的定义生成。您可能会经常看到命名空间属性被分配到相关 URI 的情况。清单 1 显示了从库存中取得产品列表的 C# .NET Web 服务代码。

清单 1. 有相关命名空间 URI 的库存 Web 服务

[WebService(Namespace="services.inventory")]   public class GetProductsService: WebService   {    public struct Product {      public string name;      public int   qty;      public float price;    }    [WebMethod]    [XmlInclude(typeof(Product))]    public Product[] listProducts()    {      Product[] products =      getInventory(); // getInventory() is a private method to retrieve all products      return products;    }   }

在清单 1 中,Namespace="services.inventory" 属性在 WSDL 文件中的结果是 targetNamespace="services.inventory"。结果,所有在本地定义的元素、类型及属性均被映射到命名空间的相关 URI services.inventory 之下。以下显示了 WSDL 文档的模式部分:

清单 2. 生成的 WSDL 文件显示了作为 targetNamespace 的相关 URI 引用

xmlns:s0="services.inventory"    <types>      <s:schema elementFormDefault="qualified"        targetNamespace="services.inventory" xmlns:s="http://www.w3.org/2001/XMLSchema">        <s:complexType name="ArrayOfProduct">          <s:sequence>            <s:element maxOccurs="unbounded" minOccurs="0"              name="Product" type="s0:Product"/>          </s:sequence>        </s:complexType>        <s:complexType name="Product">          <s:sequence>            <s:element maxOccurs="1" minOccurs="0" name="name" type="s:string"/>            <s:element maxOccurs="1" minOccurs="1" name="qty" type="s:int"/>            <s:element maxOccurs="1" mi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号