使用 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”)。
目录
要学习本教程,您需要具备以下软件和资源。
Tomcat 和 GlassFish 都可以随同 NetBeans IDE 的 Web 和 Java EE 分发一起安装。此外,也可以访问 GlassFish 下载页 或 Apache Tomcat 下载页 。
基于 XML 文档生成 Java 对象
本练习的目的旨在创建一个项目,并基于 XML 文档生成 Java 对象。
选择“文件”>“新建项目”。在“类别”下选择 "Java"。在“项目”下,选择“Java 应用程序”,然后单击“下一步”。
在“项目名称”中,输入 JseSimpleClientReport ,然后单击“完成”。
NetBeans 6.1 提供了一些用于创建项目的新选项,对于这些选项,可以保留其缺省设置。例如,可以将“使用专用的文件夹来存储库”复选框保留为取消选中状态。
右键单击 "JseSimpleClientReport" 节点,并选择“新建”>“其他”> "XML" >“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 目录文件。
在“绑定名称”中键入 CreditReport ,并在“包名”中键入 org.netbeans.j2ee.wsdl.creditreport 。
单击“从本地文件系统中选择”旁边的“浏览”,然后浏览到在本教程开头所下载的 WSDL 文件。
在“架构类型”下拉列表中,选择 "WSDL"。您现在应该看到如下所示的屏幕:
单击“完成”。
IDE 将基于给定的 XML 文档生成 Java 对象。在下一节中,我们将在 IDE 中检查 Java 对象。
检查 JAXB 向导输出
本练习的目的旨在帮助我们熟悉 NetBeans IDE 中用于处理 JAXB 向导输出的工具。
如同在生成项目时 IDE 重新生成其他工件一样,它也会在 build 文件夹中生成 Java 对象。打开“文件”窗口,然后便可以浏览到生成的 Java 对象所在的位置:
“项目”窗口将显示一个包含 WSDL 文件的新节点,如下所示。请注意,您可以右键单击 "CreditReport" 节点,然后重新打开向导,以便更改之前指定的设置。
另请注意,对于 JDK 5,向导已将 JAXB 库放在应用程序的类路径中。对于 JDK 6,由于 JDK 本身提供了 JAXB 库,因此将不在“库”节点中添加任何新节点。
如果您更改了向导中的设置,则可以按如下所示重新生成 Java 对象:
右键单击 WSDL 文件,然后选择“打开”。将在包含三个标签(“源”、"WSDL" 和“合作伙伴”)的编辑器中打开该文档。单击 "WSDL";请注意,将打开可视视图,您可以在其中轻松地分析和编辑 WSDL 文件。
现在,您已了解 IDE 为 XML 文档生成了哪些内容,接下来我们将使用一些熟悉的工具来对生成的 Java 对象执行一些有意义的操作。
使用 Java 对象
本练习的目的旨在对 IDE 所生成的文件和代码执行一些有意义的操作。您将在生成的某个 Java 对象中设置一些值,然后将该对象编组到 IDE 的“输出”窗口中。
打开“新建 Java 应用程序”向导所生成的 Main 类。
在构造函数中声明 CreditReport ,它是生成的根 JAXB 类之一:
public static void main(String[] args) {
CreditReport cr = new CreditReport();
}
接下来,只键入 "cr" 以开始使用声明,然后请注意,当按 Ctrl-空格键时,IDE 将给出 JAXB 工件的相关代码完成选项:
为 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));
在编辑器中键入字母 "jaxbm"。这些字母表示 "JAXB Marshalling"。您现在应该看到如下所示的屏幕:
出现红色下划线的原因是,您键入的字符不能构成属于 Java 编程语言组成部分的单词。这些字母所构成的是将在下一步使用的 NetBeans 代码模板。另一个相关的代码模板为 "jaxbu",它表示 "JAXB Unmarshalling"。
按 "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
}
在代码主体中的任意位置单击鼠标右键,然后选择“修复导入”。将在代码中添加所需的包 import 语句。此时所有的错误指示符都应该消失。
现在,您已使用 IDE 所提供的各种工具在编辑器中处理了 JAXB。接下来,可以部署该小型应用程序了。
运行应用程序。“输出”窗口应如下所示:
另请参见
有关使用 NetBeans IDE 开发 Java EE 应用程序的更多信息,请参见以下资源:
要发送意见和建议、获得支持以及随时了解 NetBeans IDE Java EE 开发功能的最新开发情况,请加入
nbj2ee
@
netbeans.org
邮件列表 。