快速业务通道

从XML到Java代码的数据绑定之三 从文本到字节码 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
ding> export CLASSPATH=$CLASSPATH:/projects/dev/binding /projects/dev/binding> java org.enhydra.xml.binding.SchemaMapper xml/configuration.xsd /projects/dev/binding> javac -d . *.java

从XML到Java代码的数据绑定之三 从文本到字节码(4)

时间:2010-12-02

使用 unmarshaller

如果已经从 XML 模式生成了类,并经过编译,则可以继续。作为确保类是否工作的简单测试,可以使用清单 7 中的类测试数据绑定的功能性(或 下载这个类)。

清单 7. 数据绑定测试类

import java.io.File; import org.enhydra.xml.binding.unmarshaller; public class TestMapper {    public static void main(String[] args) {      System.out.println("Starting unmarshalling...");   try {        File file = new File("xml/example.xml");        Object o = unmarshaller. unmarshall(file.toURL());        System.out.println("Object class: " + o.getClass().getName());         System.out.println("Casting to WebServiceConfiguration...");         WebServiceConfiguration config = ( WebServiceConfiguration)o;        System.out.println("Successful cast.");        System.out.println("Name: " + config.getName());        System.out.println("Version: " + config.getVersion());        System.out.println("Port Number: " + config.getPort().getNumber());        System.out.println("Port Protocol: " + config.getPort().getProtocol());   } catch (Exception e) {        e.printStackTrace();      }    } }

编译和运行该数据绑定测试类以查看结果,如清单 8 所示。

清单 8. 测试 unmarshaller

/projects/dev/binding> javac -d . TestMapper.java /projects/dev/binding> java TestMapper Starting unmarshalling... Object class: WebServiceConfiguration Impl Casting to WebServiceConfiguration ... Successful cast. Name: Unsecured Web Listener Version: 1.1 Port Number: 80 Port Protocol: http

启动 Web 服务

作为一个更实用的示例,让我们回顾已经在几篇文章中提到的 Web 服务示例。假设有一些可以编程启动的 Java 类(叫做 WebService ),那么可简单地使用数据绑定来获取该类的配置信息。现在,从一个 XML 文档(或者甚至几个)中读取和启动新的 Web 侦听程序是非常容易的事 -- 这不需要任何 XML 特定 API 的知识,如清单 9 所示。将配置数据取消编组成 Java 对象,然后使用标准 Java accessor 方法(通常是 getXXX() 格式)来配置新的 Web 服务。

清单 9. XML 到 Web 侦听程序

// Assume we have a List of URLs    for (Iterator i = urls.iterator(); i.hasNext(); ) {      WebServiceConfiguration config = unmarshaller.unmarshal((URL)i.next());      WebService newService = new WebService();      newService.setName(config.getName());      // Set up port information      newService.setPortNumber(config.getPort().getNumber());      newService.setProtocol(config.getPort().getProtocol());      // Set up document root      newService.setDocRoot(config.getDocument().getRoot());      newService.setErrorPage(config.getDocument().getError());      newService.start();    }

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