corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

使用 JAXB 将 WSDL 绑定到 Java

使用 Java Architecture for XML Binding API (JAXB),可以轻松地访问以 Java 编程语言编写的应用程序中的 XML 文档。本文档说明了 NetBeans IDE 6.1 和 6.0 如何为 JAXB 提供工具支持,其主要方式是借助将各种类型的 XML 文档转变为 Java 类的向导。我们将首先通过给定的 WSDL 文件生成 Java 类,然后再对这些类执行一些操作。

在本教程中,您将具体学习以下两方面的知识:

  • 如何使用 IDE 中的向导将 XML 文档的架构绑定到表示该架构的一组 Java 类。
  • 如何利用 IDE 所提供的各种工具来快速、有效地使用生成的 Java 类。

有关 JAXB 体系结构以及整个 JAXB 的详细信息,请参见《The Java Web Services Tutorial》(《Java Web 服务教程》)中的第 2 章 "Binding between XML Schema and Java Classes"(“XML 架构与 Java 类之间的绑定”)以及第 3 章 "Using JAXB"(“使用 JAXB”)。

目录

本页上的内容适用于 NetBeans IDE 6.0 和 6.1

要学习本教程,您需要具备以下软件和资源。

软件或资源 要求的版本
NetBeans IDE “全部”版本 6.0 或 6.1
必须安装 SOA 插件。
Java Development Kit (JDK) 版本 6
版本 5
符合 Java EE 规范的 Web 服务器或应用服务器 Tomcat Web Server 6.0 和/或
GlassFish V2 应用服务器
本教程中使用的 WSDL 文件CreditReportSimple.wsdl

Tomcat 和 GlassFish 都可以随同 NetBeans IDE 的 Web 和 Java EE 分发一起安装。此外,也可以访问 GlassFish 下载页Apache Tomcat 下载页

基于 XML 文档生成 Java 对象

本练习的目的旨在创建一个项目,并基于 XML 文档生成 Java 对象。

  1. 选择“文件”>“新建项目”。在“类别”下选择 "Java"。在“项目”下,选择“Java 应用程序”,然后单击“下一步”。
  2. 在“项目名称”中,输入 JseSimpleClientReport,然后单击“完成”。

    NetBeans 6.1 提供了一些用于创建项目的新选项,对于这些选项,可以保留其缺省设置。例如,可以将“使用专用的文件夹来存储库”复选框保留为取消选中状态。

  3. 右键单击 "JseSimpleClientReport" 节点,并选择“新建”>“其他”> "XML" >“JAXB 绑定”。然后,单击“下一步”。将显示“新建 JAXB 绑定”向导。
    JAXB 向导

    以上向导中的设置具有如下用途:

    • 绑定名称。指定新的 JAXB 绑定的名称,该名称将用于标识此绑定。
    • 项目。显示当前项目的名称。
    • 架构文件。要使用的文件既可以是本地的,也可以是可在线获取的。
    • 架构类型。支持以下类型的 XML 文档:
      • XML 架构
      • Relax NG
      • Relax NG Compact
      • XML DTD
      • WSDL
    • 包名。指定要在其中生成 Java 对象的包。
    • 编译器选项。有许多编译器选项可用,具体请参见《The Java EE 5 Tutorial》(《Java EE 5 教程》)中的此处所述。但是,只有以下选项与 JAXB 向导有关,您可以使用向导中的复选框对其进行设置:
      • nv。不执行严格的输入架构验证。缺省情况下,严格的源架构验证是在处理之前执行的。请注意,这并不意味着绑定编译器将不执行任何验证,而仅表示将执行较为宽松的验证。
      • readOnly。强制编译器将生成的 Java 源文件标记为只读。缺省情况下,编译器不会对其生成的 Java 源文件进行写保护。
      • npa。禁止在 **/package-info.java 中生成包级标注。使用此开关将导致生成的代码将这些标注包含在其他的生成类中。
      • verbose。生成最详细的编译器输出,如进度信息和警告。
      • quiet。禁止编译器输出,如进度信息和警告。
    • 使用扩展。缺省情况下,编译器将严格强制执行 JAXB 规范的“兼容性”一章中概述的规则。在缺省(严格)模式下,您也只能使用规范中定义的绑定定制。通过使用此选项,您可以使用 JAXB 供应商扩展。
    • 使用绑定文件。用于导入和编辑一个或多个 JAXB 绑定定制文件。
    • 使用目录文件。用于导入和编辑 OASIS 目录文件。
  4. 在“绑定名称”中键入 CreditReport,并在“包名”中键入 org.netbeans.j2ee.wsdl.creditreport
  5. 单击“从本地文件系统中选择”旁边的“浏览”,然后浏览到在本教程开头所下载的 WSDL 文件。
  6. 在“架构类型”下拉列表中,选择 "WSDL"。您现在应该看到如下所示的屏幕:
    已填好的 JAXB 向导
  7. 单击“完成”。

IDE 将基于给定的 XML 文档生成 Java 对象。在下一节中,我们将在 IDE 中检查 Java 对象。

检查 JAXB 向导输出

本练习的目的旨在帮助我们熟悉 NetBeans IDE 中用于处理 JAXB 向导输出的工具。

  1. 如同在生成项目时 IDE 重新生成其他工件一样,它也会在 build 文件夹中生成 Java 对象。打开“文件”窗口,然后便可以浏览到生成的 Java 对象所在的位置:
    显示生成的 Java 对象的项目视图
  2. “项目”窗口将显示一个包含 WSDL 文件的新节点,如下所示。请注意,您可以右键单击 "CreditReport" 节点,然后重新打开向导,以便更改之前指定的设置。
    显示“更改 JAXB 选项”的 "CreditReport" 上下文菜单

    另请注意,对于 JDK 5,向导已将 JAXB 库放在应用程序的类路径中。对于 JDK 6,由于 JDK 本身提供了 JAXB 库,因此将不在“库”节点中添加任何新节点。

  3. 如果您更改了向导中的设置,则可以按如下所示重新生成 Java 对象:
    显示“重新生成 Java 代码”选项的“JAXB 绑定”上下文菜单
  4. 右键单击 WSDL 文件,然后选择“打开”。将在包含三个标签(“源”、"WSDL" 和“合作伙伴”)的编辑器中打开该文档。单击 "WSDL";请注意,将打开可视视图,您可以在其中轻松地分析和编辑 WSDL 文件。
    WSDL 编辑器中的 CreditReportSimple WSDL 文件

现在,您已了解 IDE 为 XML 文档生成了哪些内容,接下来我们将使用一些熟悉的工具来对生成的 Java 对象执行一些有意义的操作。

使用 Java 对象

本练习的目的旨在对 IDE 所生成的文件和代码执行一些有意义的操作。您将在生成的某个 Java 对象中设置一些值,然后将该对象编组到 IDE 的“输出”窗口中。

  1. 打开“新建 Java 应用程序”向导所生成的 Main 类。
  2. 在构造函数中声明 CreditReport,它是生成的根 JAXB 类之一:
    public static void main(String[] args) {
    
    
         CreditReport cr = new CreditReport();
    
    
            }
  3. 接下来,只键入 "cr" 以开始使用声明,然后请注意,当按 Ctrl-空格键时,IDE 将给出 JAXB 工件的相关代码完成选项:
    代码完成选项
  4. 为 JAXB 类设置一些值,如下所示:
        cr.setFirstName("Butros Butros");
    
    
        cr.setLastName("Gali");
    
    
        cr.setDob("1930/05/30");
    
    
        cr.setScore("900");
    
    
        cr.setSsn("123-45-6789");
    
    
    
    
    
        cr.setLatestAddress1("2500 Some Ave");
    
    
        cr.setLatestAddress2("Suite 5000");
    
    
        cr.setCity("New York");
    
    
        cr.setState("New York");
    
    
        cr.setCountry("USA");
    
    
        cr.setPostalCode("NY 12345-6789");
    
    
    
    
    
        cr.setCurrency("USD");
    
    
        cr.setLiability(BigInteger.valueOf(2000000));
    
    
        cr.setLiquidAssests(BigInteger.valueOf(3000000));
    
    
        cr.setImmovableAssests(BigInteger.valueOf(5000000));
    
    
            
  5. 在编辑器中键入字母 "jaxbm"。这些字母表示 "JAXB Marshalling"。您现在应该看到如下所示的屏幕:
    编辑器中显示的带有红色下划线的 jaxbm 代码片段

    出现红色下划线的原因是,您键入的字符不能构成属于 Java 编程语言组成部分的单词。这些字母所构成的是将在下一步使用的 NetBeans 代码模板。另一个相关的代码模板为 "jaxbu",它表示 "JAXB Unmarshalling"。

  6. 按 "Tab" 键。

    将展开 "jaxbm" 字符,并显示以下代码片段:

    try {
    
    
        javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cr.getClass().getPackage().getName());
    
    
        javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();
    
    
        marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N
    
    
        marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
    
    
        marshaller.marshal(cr, System.out);
    
    
    } catch (javax.xml.bind.JAXBException ex) {
    
    
        // XXXTODO Handle exception
    
    
        java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
    
    
    }
  7. 在代码主体中的任意位置单击鼠标右键,然后选择“修复导入”。将在代码中添加所需的包 import 语句。此时所有的错误指示符都应该消失。

    现在,您已使用 IDE 所提供的各种工具在编辑器中处理了 JAXB。接下来,可以部署该小型应用程序了。

  8. 运行应用程序。“输出”窗口应如下所示:
    客户端报告输出


另请参见

有关使用 NetBeans IDE 开发 Java EE 应用程序的更多信息,请参见以下资源:

要发送意见和建议、获得支持以及随时了解 NetBeans IDE Java EE 开发功能的最新开发情况,请加入 邮件列表

Bookmark this page

del.icio.us furl simpy slashdot technorati digg