当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

<b>提高J2EE技术与.NET之间的互操作性,第3部份</b>[Java编程]

赞助商链接



  本文“<b>提高J2EE技术与.NET之间的互操作性,第3部份</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

引言

正如 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" minOccurs="1" name="price"
type="s:float"/>
         </s:sequence>
       </s:complexType>
       <s:element name="ArrayOfProduct" nillable="true"
type="s0:ArrayOfProduct"/>
     </s:schema>
   </types>

elementFormDefault="qualified" 属性确保 targetNamespace 限定包含复杂范例 Product 在内的全部部分声明元素.假定有另一个单位利用相同的相关命名空间实现近似的 Product 范例.就像当利用 IBM® WebSphere® Studio Application Developer Integration Edition(Application Developer)BPEL 计划器从差别的搭档链接中操纵普通复杂范例将 Web 服务集成到业务流程中时利用 wsdl:import 及 xsd:import 一样,从普通情势中将这两个情势导入到 WSDL 文档中.

在本场景中,假如导入的两个情势有相同的目标命名空间,则很有大概发生命名冲突.用于在另一个平台上构建集成的工具必须确保相关 URI 是基于 RFC2396 尺度文档树中的基本 URI 的.但是,在 WSDL 文档中基本 URI 并没有定义完善,默许的基本 URI 的注释取决于利用程序.最好的习惯是始终利用它自己的组织域名来确保命名空间唯一.


  以上是“<b>提高J2EE技术与.NET之间的互操作性,第3部份</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .