41.2.2. 数据类型

概述

由于它们是低级对象,因此提供商实施无法使用与更高级别的消费者 API 相同的 JAXB 生成的类型。提供程序实现用于以下类型的对象:

使用 Source 对象

提供程序实施可以接受并返回从 javax.xml.transform.Source 接口派生的对象。源对象是存放 XML 文档的低级别对象。每个 Source 实施都提供了访问存储的 XML 文档和操作其内容的方法。以下对象实施 Source 接口:

DOMSource
将 XML 消息作为文档对象模型(DOM)树保存。XML 消息存储为一组 Node 对象,这些对象通过 getNode() 方法访问。可以使用 setNode() 方法更新或添加到 DOM 树。
SAXSource
将 XML 消息作为 XML(SAX)对象的简单 API 保存。SAX 对象包含一个 InputSource 对象,其中包含原始数据和 XMLReader 对象来解析原始数据。
StreamSource
将 XML 消息作为数据流保存。数据流可以像任何其他数据流一样操作。

如果您创建您的 Provider 对象使其使用通用源对象,Apache CXF 会将消息返回为 SAXSource 对象。

可以使用端点的 source-preferred-format 属性来更改此行为。有关配置 Apache CXF 运行时的详情,请参考 第 IV 部分 “配置 Web 服务端点”

重要

使用 Source 对象时,开发人员负责确保将所有必需的绑定打包程序添加到消息中。例如,当与预期 SOAP 消息的服务交互时,开发人员必须确保将所需的 SOAP信elope 添加至传出请求中,并且 SOAP envelope 的内容正确无误。

使用 SOAPMessage 对象

在以下情况下,供应商实施可以使用 javax.xml.SOAPMessage 对象:

  • 提供程序实施使用 SOAP 绑定
  • Provider 实现使用消息模式

SOAPMessage 对象包含 SOAP 消息。它们包含一个 SOAPPart 对象和零个或多个 AttachmentPart 对象。SOAPPart 对象包含 SOAP 消息的特定部分,包括 SOAP envelope、任何 SOAP 标头和 SOAP 消息正文。AttachmentPart 对象包含作为附件传递的二进制数据。

使用 DataSource 对象

当以下条件满足时,提供程序实施可以使用实现 javax.activation.DataSource 接口的对象:

  • 实现使用 HTTP 绑定
  • 该实施使用消息模式

数据源对象提供了一种机制,用于处理各种来源中的数据,包括 URL、文件和字节数组。