|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.
弁言
正如Java包一般用来包管Java类,使其只能存在于分歧条理的定名空间中,如许便可制止类、办法等等之间的定名抵触,XML定名空间也是为不异的目标而服务于Web服务。它限制XML元素或属性的名字并匡助它们制止定名抵触。XML定名空间是基于URL应该是全局独一的基本之上的。但是,注释URL的办法及在本机代码的映照关于分歧的平台来讲是分歧的。一般这些分歧的地方是奇妙的,但假如入手下手时不办理这些的不同,到厥后有大概会很难明决。
我将鄙人面的部分傍边会商几个与定名空间有关的互操纵性成绩,包含:
利用相干的URI援用
利用共享通用域名的独一的URI
数组范例中的定名空间成绩
在WSDL顶用相干URI援用作为定名空间声明
在定名空间声明中并没有严厉克制相干URI援用,但在标准中也没无为它们供应注释。假如WSDL文件是从J2EEWeb服务中天生的,这一般不是一个成绩,由于方针定名空间是从Java包名字派生而来,而且工具(比方,Java2WSDL)主动将它们与形式接洽起来。可是在Microsoft.NETWeb服务虚现傍边,假如您同意.NET框架天生WSDL文件,那末方针定名空间就会间接从您在代码中的界说天生。您大概会常常看到定名空间属性被分派到相干URI的情形。清单1显现了从库存中获得产物列表的C#.NETWeb服务代码。
清单1.有相干定名空间URI的库存Web服务
[WebService(Namespace="services.inventory")]
publicclassGetProductsService:WebService
{
publicstructProduct{
publicstringname;
publicint qty;
publicfloatprice;
}
[WebMethod]
[XmlInclude(typeof(Product))]
publicProduct[]listProducts()
{
Product[]products=
getInventory(); //getInventory()isaprivatemethod
toretrieveallproducts
returnproducts;
}
}
在清单1中,Namespace="services.inventory"属性在WSDL文件中的了局是targetNamespace="services.inventory"。了局,一切在当地界说的元素、范例及属性均被映照到定名空间的相干URIservices.inventory之下。以下显现了WSDL文档的形式部分:
清单2.天生的WSDL文件显现了作为targetNamespace的相干URI援用
xmlns:s0="services.inventory"
<types>
<s:schemaelementFormDefault="qualified"
targetNamespace="services.inventory"
xmlns:s="http://www.w3.org/2001/XMLSchema">
<s:complexTypename="ArrayOfProduct">
<s:sequence>
<s:elementmaxOccurs="unbounded"minOccurs="0"
name="Product"type="s0:Product"/>
</s:sequence>
</s:complexType>
<s:complexTypename="Product">
<s:sequence>
<s:elementmaxOccurs="1"minOccurs="0"name="name"
type="s:string"/>
<s:elementmaxOccurs="1"minOccurs="1"name="qty"
type="s:int"/>
<s:elementmaxOccurs="1"minOccurs="1"name="price"
type="s:float"/>
</s:sequence>
</s:complexType>
<s:elementname="ArrayOfProduct"nillable="true"
type="s0:ArrayOfProduct"/>
</s:schema>
</types>
elementFormDefault="qualified"属性确保targetNamespace限制包含庞大范例Product在内的一切部分声明元素。假定有另外一个单元利用不异的相干定名空间完成相似的Product范例。就像当利用IBM |
|