第 39 章 使用 A JAXBContext 对象


摘要

JAXBContext 对象允许 Apache CXF 运行时在 XML 元素和 Java 对象之间转换数据。应用程序开发人员需要在消息处理程序中实例化 JAXBContext 对象,并在实施使用原始 XML 消息的用户时实例化。

概述

JAXBContext 对象是运行时使用的低级别对象。它允许运行时在 XML 元素及其相应的 Java 表示法之间进行转换。应用程序开发人员通常不需要使用 JAXBContext 对象。XML 数据的 marshaling 和 unmarshaling 通常由 JAX-WS 应用的传输和绑定层处理。

但是,有些情况下应用程序需要直接操作 XML 消息内容。在这两个实例中:

您将需要使用两个可用的 JAXBContext.newInstance () 方法之一来实例化 JAXBContext 对象。

最佳实践

JAXBContext 对象是资源密集型,可以实例化。建议应用尽可能创建几个实例。其中一种实现方式是创建一个 JAXBContext 对象,它可以管理应用使用的所有 JAXB 对象,并尽可能在应用的多个部分之间共享。

JAXBContext 对象是线程安全。

使用对象工厂获取 JAXBContext 对象

JAXBContext 类提供了 newInstance () 方法,如 例 39.1 “使用类获取 JAXB 上下文” 中所示,它取实施 JAXB 对象的类列表。

例 39.1. 使用类获取 JAXB 上下文

staticJAXBContextnewInstanceClass…​classesToBeBoundJAXBException

返回的 JAXBObject 对象将能够对通过传递给方法的类实施的 JAXB 对象进行 marshal 和 unmarshal 数据。它还能够处理从传递给方法中的任何类静态引用的任何类。

虽然可以将应用使用的每个 JAXB 类的名称传递给 newInstance () 方法,但效率不高。完成相同目标的更有效的方法是传递为您的应用程序生成的对象工厂或对象工厂。生成的 JAXBContext 对象将能够管理指定对象工厂可以实例化的任何 JAXB 类。

使用软件包名称获取 JAXBContext 对象

JAXBContext提供了一个新的Instance () 方法,如 例 39.2 “使用类获取 JAXB 上下文” 中所示,它采用冒号(:)分隔的软件包名称列表。指定的软件包应包含从 XML Schema 派生的 JAXB 对象。

例 39.2. 使用类获取 JAXB 上下文

staticJAXBContextnewInstanceStringcontextPathJAXBException

返回的 JAXBContext 对象能够对指定软件包中的类实施的所有 JAXB 对象进行 marshal 和 unmarshal 数据。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.