搜索

第 39 章 使用 A JAXBContext 对象

download PDF

摘要

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

概述

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

但是,当应用程序需要直接操作 XML 消息内容时,会出现实例。在两个实例中的两个中:

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

最佳实践

JAXBContext 对象是资源密集型,用于实例化。建议应用程序尽可能创建几个实例。执行此操作的一种方法是创建一个 JAXBContext 对象,它可以管理应用所使用的所有 JAXB 对象,并尽可能在应用的许多部分之间共享。

JAXBContext 对象是线程安全。

使用对象工厂获取 JAXBContext 对象

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

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

静态JAXBContextnewInstanceClass…​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.