快速业务通道

利用Eclipse Modeling Framework加强JAX-RPC类型映射的功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
nputStream(b));  return doc.getDocumentElement(); }

清单 6.将 DOMElement 转换为 SOAPElement

public SOAPElement domElement2SOAPElement(Element e) throws SOAPException {  SOAPFactory soapFactory = SOAPFactory.newInstance();  com.ibm.ws.webservices.engine.xmlsoap.SOAPElement soapElement =   (com.ibm.ws.webservices.engine.xmlsoap.SOAPElement)soapFactory.createElement(   "temp");  soapElement.setAlternateContent(e);  return soapElement; }

利用Eclipse Modeling Framework加强JAX-RPC类型映射的功能(5)

时间:2011-03-11 IBM Jeffrey Liu

全局元素和局部元素

正如前面所提到的,供应链 EMF 模型依靠映射到 Java 的元素将 XML 片段转换为相应的基于 EMF 的 Java 类。但是,默认的情况是,EMF 代码生成器只为全局元素生成映射条目,而不为局部元素生成。全局元素是 XML 模式文档中作为模式元素的子元素来声明的元素,而局部元素却不是。默认的映射清单不包括局部元素,因此,供应链 EMF 模型不能转换描述局部元素实例的 XML 片段。研究一下清单 7中的示例 XML 模式。相应的 EMF 模型识别清单 8中的全局元素实例。相反,清单 9中的局部元素实例却导致异常。要支持局部元素的转换,必须在 Java 映射中添加自定义元素。

清单 7.XML 模式示例

<schema>  <element name="GlobalElement">   <complexType>    <sequence>     <element name="LocalElement" type="xsd:string"/>    </sequence>   </complexType>  </element> </schema>

清单 8.全局元素实例

<GlobalElement>  <LocalElement>Some String</LocalElement> </GlobalElement>

清单 9.局部元素实例

<LocalElement>Some String</LocalElement>

考虑 SupplyChainSchema.xsd 文档和 WSDL to Java Bean Skeleton wizard 生成的 JavaBean 时,您将看见有三个局部元素被映射到 SOAPElement:

来自 <PurchaseOrderType> 复杂类型的 <paymentMethod> 元素

来自 <PurchaseOrderType> 复杂类型的 <item> 元素

来自 <ShippingNoticeType> 复杂类型的 <item> 元素

要在 <paymentMethod> 这个局部元素和 com.example.supplychain.PaymentMethodType 这个 Java 类之间建立自定义映射,请在 SupplyChainEMF 项目中打开 /SupplyChainEMF/src/com/example/supplychain/impl /SupplychainPackageImpl.java。将清单 10 中的代码片段添加到 initializePackageContents() 方法的尾部。该方法将作为初始化的一部分被调用。

清单 10.添加一个局部元素映射

initEClass(paymentMethodTypeEClass, PaymentMethodType.class,  "paymentMethod", !IS_ABSTRACT, !IS_INTERFACE);

接下来,将为两个 <item> 局部元素建立自定义映射。和 <paymentMethod> 元素不同的是,不能在 initializePackageContents() 方法中添加静态映射条目,这是因为 EMF 模型对每个局部元素名称只允许一个映射。要克服这个缺点,可以象使用映射那样动态注册并移除必要的映射。清单 11 显示了 4 个方法,这 4 个方法允许您从 <PurchaseOrderType> 复杂类型中注册和移除 <item> 元素映射,以及从 <ShippingNoticeType> 复杂类型中注册和移除 <item> 元素映射。在 SupplyChainEMF 项目中,打开 SupplychainPackageImpl.java 并添加清单 11所示的代码片段。

清单 11.添加一个局部元素映射

private EClass 

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