第 39 章 使用 A JAXBContext 对象
摘要
JAXBContext
对象允许 Apache CXF 的运行时在 XML 元素和 Java 对象之间转换数据。应用程序开发人员需要实例化 JAXBContext
对象,它们要在消息处理程序中使用 JAXB 对象,并在实施使用原始 XML 消息的消费者时。
概述
JAXBContext
对象是运行时使用的低级别对象。它允许运行时在 XML 元素和对应的 Java 表示法之间转换。应用程序开发人员通常不需要与 JAXBContext
对象一起使用。XML 数据的 marshaling 和 unmarling 通常由 JAX-WS 应用的传输和绑定层处理。
但是,当应用程序需要直接操作 XML 消息内容时,会出现实例。在两个实例中的两个中:
您需要使用两个可用的
方法之一实例化 JAXBContext 对象。
JAXBContext
.newInstance ()
最佳实践
JAXBContext
对象是资源密集型,用于实例化。建议应用程序尽可能创建几个实例。执行此操作的一种方法是创建一个 JAXBContext
对象,它可以管理应用所使用的所有 JAXB 对象,并尽可能在应用的许多部分之间共享。
JAXBContext
对象是线程安全。
使用对象工厂获取 JAXBContext 对象
JAXBContext
类 提供新的Instance ()
方法,如 例 39.1 “使用类获取 JAXB 上下文” 所示,取实施 JAXB 对象的类列表。
例 39.1. 使用类获取 JAXB 上下文
静态JAXBContext
newInstance
Class…
classesToBeBound
JAXBException
返回的 JAXBObject
对象将能够为传递到方法的类实施的 JAXB 对象进行 marshal 和 unmarshal 数据。它还能够处理从传递给方法的任何类静态引用的任何类。
虽然您可以将应用所使用的每个 JAXB 类的名称传递给 newInstance ()
方法,但它效率不高。实现相同目标的更有效方法是将应用程序生成对象工厂或对象工厂。生成的 JAXBContext
对象将可以管理指定对象工厂可实例化的任何 JAXB 类。
使用软件包名称获取 JAXBContext 对象
JAXBContext
类提供 一个新的Instance ()
方法,它在 例 39.2 “使用类获取 JAXB 上下文” 中显示,它采用冒号(:
)软件包名称列表。指定的软件包应包含从 XML Schema 派生的 JAXB 对象。
例 39.2. 使用类获取 JAXB 上下文
staticJAXBContext
newInstance
String
contextPath
JAXBException
返回的 JAXBContext
对象将能够为指定软件包中的类实施的所有 JAXB 对象进行 marshal 和 unmarshal 数据。