快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
yChainSchema.xsd) 中声明的元素和 EMF 代码生成器创建的 Java 类之间建立了一个映射。该映射用于 XML 片段与相应的基于 EMF 的 Java 类之间的相互转换。要初始化供应链 EMF 模型,将下面的静态代码块添加到 SupplyChainBindingImpl.java 中。

清单 2.初始化 EMF 包

static {  SupplychainPackageImpl.init(); }

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

时间:2011-03-11 IBM Jeffrey Liu

接下来,在 SupplyChainBindingImpl.java 中添加 4 个方法,这些方法将 SOAPElement 转换为 DOMElement,然后再转换为相应的基于 EMF 的 Java 类,也可以反过来转换。清单3、4、5以及6 显示了这些方法。soapElement2DOMElement(SOAPElement soapElement) 方法和 domElement2SOAPElement(Element e) 方法利用两个特定于应用程序和站点开发者实现的方法: getAsDOM() 和 setAlternateContent(e) ,来负责 SOAPElement 到 DOMElement 的转换。要从特定于提供商的代码中清除这些方法,可以手动的遍历 SOAPElement 并构造相应的 DOMElement。

在本文中,可以使用现成的方法,也就是说,可以使用应用程序和站点开发者实现提供的方法。事实上,如果 SOAP 附带了 Java V1.2 (SAAJ)- 兼容实现的附加 API 函数,那么就不再需要将 SOAPElement 转换为 DOMElement,这是因为 SAAJ V1.2 需要 SOAPElement 以直接扩展 DOMElement。

清单 3.将 SOAPElement 转换为 DOMElement

public Element soapElement2DOMElement(SOAPElement soapElement) throws Exception {  return ((com.ibm.ws.webservices.engine.xmlsoap.SOAPElement)soapElement).getAsDOM(); }

清单 4.将 DOMElement 转换为 EMF 对象

public EObject domElement2EObject(Element e) throws TransformerConfigurationException, TransformerException, IOException {  DOMSource domSource = new DOMSource(e);  Transformer serializer = TransformerFactory.newInstance().newTransformer();  ByteArrayOutputStream baos = new ByteArrayOutputStream();  serializer.transform(domSource, new StreamResult(baos));  byte[] b = baos.toByteArray();  System.out.println(new String(b));  URI uri = URI.createURI(SupplychainPackage.eNS_URI);  SupplychainResourceFactoryImpl factory = new SupplychainResourceFactoryImpl();  Resource res = factory.createResource(uri);  ByteArrayInputStream bais = new ByteArrayInputStream(b);  res.load(bais, null);  List contents = res.getContents();  return (!contents.isEmpty()) ? (EObject)contents.get(0) : null; }

清单 5.将 EMF 对象转换为 DOMElement

public Element eObject2DOMElement(EObject eObject) throws IOException, ParserConfigurationException, SAXException {  URI uri = URI.createURI(SupplychainPackage.eNS_URI);  SupplychainResourceFactoryImpl factory = new SupplychainResourceFactoryImpl();  Resource res = factory.createResource(uri);  res.getContents().add(eObject);  ByteArrayOutputStream baos = new ByteArrayOutputStream();  res.save(baos, null);  byte[] b = baos.toByteArray();  System.out.println(new String(b));  DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();  DocumentBuilder docBuilder = docFactory.newDocumentBuilder();  Document doc = docBuilder.parse(new ByteArrayI

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