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、文件和字节数组。