javax.xml.soap

接口
异常
java.lang.Object
  继承者 javax.xml.soap.MessageFactory

public abstract class MessageFactory
     
extends Object

创建 SOAPMessage 对象的工厂。

SAAJ 客户端可以使用方法 newInstance 创建 MessageFactory 对象,如以下代码行所示。

MessageFactory mf = MessageFactory.newInstance();
MessageFactory mf12 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
 

默认情况下,所有 MessageFactory 对象(无论它们是如何创建的)都将生成具有以下元素的 SOAPMessage 对象:

  • 一个 SOAPPart 对象
  • 一个 SOAPEnvelope 对象
  • 一个 SOAPBody 对象
  • 一个 SOAPHeader 对象
在某些情况下,可以获取特殊的 MessageFactory 对象来生成用 SOAPHeader 对象和 SOAPBody 对象中的附加条目预填充的消息。新的 SOAPMessage 对象的内容取决于使用两种 MessageFactory 方法中的哪一种创建该对象。
  • createMessage()
    这是客户端通常用来创建请求消息的方法。
  • createMessage(MimeHeaders, java.io.InputStream) -- 消息的内容取自 InputStream 对象,头取自 MimeHeaders 对象。
    此方法可以供服务实现在内部用来创建响应请求的消息。


构造方法摘要
MessageFactory()
           
 
方法摘要
abstract  SOAPMessage createMessage()
          使用默认的 SOAPPartSOAPEnvelopeSOAPBodySOAPHeader 对象创建新的 SOAPMessage 对象。
abstract  SOAPMessage createMessage(MimeHeaders headers, InputStream in)
          将给定 InputStream 对象的内容内部化到新的 SOAPMessage 对象,并返回该 SOAPMessage 对象。
static MessageFactory newInstance()
          创建新的 MessageFactory 对象,该对象是默认实现 (SOAP 1.1) 的实例。
static MessageFactory newInstance(String protocol)
          创建新的 MessageFactory 对象,该对象是指定实现的实例。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

MessageFactory

public MessageFactory()
方法详细信息

newInstance

public static MessageFactory newInstance()
                                  throws SOAPException
创建新的 MessageFactory 对象,该对象是默认实现 (SOAP 1.1) 的实例。 此方法使用以下查找过程顺序来确定要加载的 MessageFactory 实现类:
  • 使用 javax.xml.soap.MessageFactory 系统属性。
  • 使用 JRE 文件夹中的属性文件 "lib/jaxm.properties"。此配置文件格式是标准的 java.util.Properties 格式且包含实现类的完全限定名,其中实现类的键是上文定义的系统属性。
  • 如果 Services API(在 JAR 规范中进行了详细描述)可用,可以使用它来确定类名称。Services API 将查找在运行时可用的 jar 中 META-INF/services/javax.xml.soap.MessageFactory 文件中的类名称。
  • 使用 SAAJMetaFactory 实例来定位 MessageFactory 实现类。

返回:
新的 MessageFactory 实例
抛出:
SOAPException - 如果创建默认的 MessageFactory 实现时存在错误。
另请参见:
SAAJMetaFactory

newInstance

public static MessageFactory newInstance(String protocol)
                                  throws SOAPException
创建新的 MessageFactory 对象,该对象是指定实现的实例。可以是动态消息工厂、SOAP 1.1 消息工厂或 SOAP 1.2 消息工厂。动态消息工厂根据作为 createMessage 方法参数指定的 MIME 头创建消息。此方法使用 SAAJMetaFactory 来定位实现类并创建 MessageFactory 实例。

参数:
protocol - 字符串常量,表示指定消息工厂实现的类。可以是 DYNAMIC_SOAP_PROTOCOLDEFAULT_SOAP_PROTOCOL(等同于 SOAP_1_1_PROTOCOL)或 SOAP_1_2_PROTOCOL
返回:
新的 MessageFactory 实例
抛出:
SOAPException - 如果创建指定的 MessageFactory 实例时存在错误。
从以下版本开始:
SAAJ 1.3
另请参见:
SAAJMetaFactory

createMessage

public abstract SOAPMessage createMessage()
                                   throws SOAPException
使用默认的 SOAPPartSOAPEnvelopeSOAPBodySOAPHeader 对象创建新的 SOAPMessage 对象。特定于配置文件的消息工厂可以选择用特定于配置文件的头预填充 SOAPMessage 对象。

可以向此消息的 SOAPPart 对象添加内容,如果一个只包含 SOAP 部分的消息便已足够,则可以按“原样”发送消息。否则,SOAPMessage 对象需要创建一个或多个 AttachmentPart 对象并将其添加到自身。任何非 XML 格式的内容必须在 AttachmentPart 对象中。

返回:
一个新的 SOAPMessage 对象
抛出:
SOAPException - 如果发生 SOAP 错误
UnsupportedOperationException - 如果此 MessageFactory 实例的协议是 DYNAMIC_SOAP_PROTOCOL

createMessage

public abstract SOAPMessage createMessage(MimeHeaders headers,
                                          InputStream in)
                                   throws IOException,
                                          SOAPException
将给定 InputStream 对象的内容内部化到新的 SOAPMessage 对象,并返回该 SOAPMessage 对象。

参数:
in - 包含消息数据的 InputStream 对象
headers - 用于创建消息的特定于传输的头,使用与传输无关的方式传递给消息
返回:
一个新的 SOAPMessage 对象,包含给定 InputStream 对象的数据
抛出:
IOException - 如果读取输入流的数据时存在错误
SOAPException - 消息无效时抛出
IllegalArgumentException - 如果 MessageFactory 需要一个或多个 MIME 头存在于 headers 参数中,但是它们丢失了。 SOAP_1_1_PROTOCOLSOAP_1_2_PROTOCOLMessageFactory 实现不得因此抛出 IllegalArgumentException