Module  java.xml.ws
软件包  javax.xml.soap

Class 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对象:

    • A SOAPPart对象
    • A SOAPEnvelope对象
    • A SOAPBody对象
    • 一个SOAPHeader对象
    在某些情况下,可能会获得专门的MessageFactory对象,该对象会产生预先SOAPHeader对象和SOAPBody对象中的附加条目的消息。 新的SOAPMessage对象的内容取决于两个MessageFactory方法中的哪一个用于创建它。
    • createMessage()
      这是客户端通常用于创建请求消息的方法。
    • createMessage(MimeHeaders, java.io.InputStream) -消息具有从所述内容InputStream从对象和标题MimeHeaders对象
      该方法可以由服务实现在内部使用来创建一个响应请求的消息。
    从以下版本开始:
    1.6
    • 构造方法详细信息

      • MessageFactory

        public MessageFactory​()
    • 方法详细信息

      • newInstance

        public static MessageFactory newInstance​()
                                          throws SOAPException
        创建一个新的MessageFactory对象,该对象是默认实现(SOAP 1.1)的一个实例。 此方法使用javax.xml.soap指定的查找过程来定位并加载MessageFactory类。
        结果
        一个新的实例 MessageFactory
        异常
        SOAPException - 如果在创建 MessageFactory的默认实现时 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的指定实现是否有错误。
        从以下版本开始:
        1.6,SAAJ 1.3
        另请参见:
        SAAJMetaFactory
      • createMessage

        public abstract SOAPMessage createMessage​()
                                           throws SOAPException
        创建一个新SOAPMessage用默认对象SOAPPartSOAPEnvelopeSOAPBody ,并SOAPHeader对象。 特定于个人资料的消息工厂可以选择使用个人资料标题预填充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要求在headers参数中存在一个或多个MIME标题,并且它们丢失。 MessageFactory实现为SOAP_1_1_PROTOCOL或者SOAP_1_2_PROTOCOL不得抛出IllegalArgumentException这个原因。