Class MessageFactoryImpl

java.lang.Object
jakarta.xml.soap.MessageFactory
org.apache.axis2.saaj.MessageFactoryImpl

public class MessageFactoryImpl extends jakarta.xml.soap.MessageFactory

A factory for creating SOAPMessage objects.

A JAXM client performs the following steps to create a message.

  • Creates a MessageFactory object from a ProviderConnection object (con in the following line of code). The String passed to the createMessageFactory method is the name of of a messaging profile, which must be the URL for the schema.
     MessageFactory mf = con.createMessageFactory(schemaURL); 
  • Calls the method createMessage on the MessageFactory object. All messages produced by this MessageFactory object will have the header information appropriate for the messaging profile that was specified when the MessageFactory object was created.
     SOAPMessage m = mf.createMessage(); 
It is also possible to create a MessageFactory object using the method newInstance, as shown in the following line of code.
 MessageFactory mf =
 MessageFactory.newInstance(); 
A standalone client (a client that is not running in a container) can use the newInstance method to create a MessageFactory object.

All MessageFactory objects, regardless of how they are created, will produce SOAPMessage objects that have the following elements by default:

  • A SOAPPart object
  • A SOAPEnvelope object
  • A SOAPBody object
  • A SOAPHeader object
If a MessageFactory object was created using a ProviderConnection object, which means that it was initialized with a specified profile, it will produce messages that also come prepopulated with additional entries in the SOAPHeader object and the SOAPBody object. The content of a new SOAPMessage object depends on which of the two MessageFactory methods is used to create it.

  • createMessage() -- message has no content
    This is the method clients would normally use to create a request message.
  • createMessage(MimeHeaders, java.io.InputStream) -- message has content from the InputStream object and headers from the MimeHeaders object
    This method can be used internally by a service implementation to create a message that is a response to a request.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected String
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    jakarta.xml.soap.SOAPMessage
    Creates a new SOAPMessage object with the default SOAPPart, SOAPEnvelope, SOAPBody, and SOAPHeader objects.
    jakarta.xml.soap.SOAPMessage
    createMessage(jakarta.xml.soap.MimeHeaders mimeheaders, InputStream inputstream)
    Internalizes the contents of the given InputStream object into a new SOAPMessage object and returns the SOAPMessage object.
    void
    setProcessMTOM(boolean processMTOM)
    Specify whether MTOM messages should be processed or parsed literally.
    void
    setSOAPVersion(String soapVersion)
     

    Methods inherited from class jakarta.xml.soap.MessageFactory

    newInstance, newInstance

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • soapVersion

      protected String soapVersion
  • Constructor Details

    • MessageFactoryImpl

      public MessageFactoryImpl()
  • Method Details

    • createMessage

      public jakarta.xml.soap.SOAPMessage createMessage() throws jakarta.xml.soap.SOAPException
      Creates a new SOAPMessage object with the default SOAPPart, SOAPEnvelope, SOAPBody, and SOAPHeader objects. Profile-specific message factories can choose to prepopulate the SOAPMessage object with profile-specific headers.

      Content can be added to this message's SOAPPart object, and the message can be sent "as is" when a message containing only a SOAP part is sufficient. Otherwise, the SOAPMessage object needs to create one or more AttachmentPart objects and add them to itself. Any content that is not in XML format must be in an AttachmentPart object.

      Specified by:
      createMessage in class jakarta.xml.soap.MessageFactory
      Returns:
      a new SOAPMessage object
      Throws:
      jakarta.xml.soap.SOAPException - if a SOAP error occurs java.lang.UnsupportedOperationException - if the protocol of this MessageFactory instance is DYNAMIC_SOAP_PROTOCOL
    • createMessage

      public jakarta.xml.soap.SOAPMessage createMessage(jakarta.xml.soap.MimeHeaders mimeheaders, InputStream inputstream) throws IOException, jakarta.xml.soap.SOAPException
      Internalizes the contents of the given InputStream object into a new SOAPMessage object and returns the SOAPMessage object.
      Specified by:
      createMessage in class jakarta.xml.soap.MessageFactory
      Parameters:
      mimeheaders - the transport-specific headers passed to the message in a transport-independent fashion for creation of the message
      inputstream - the InputStream object that contains the data for a message
      Returns:
      a new SOAPMessage object containing the data from the given InputStream object
      Throws:
      IOException - if there is a problem in reading data from the input stream
      jakarta.xml.soap.SOAPException - if the message is invalid
    • setSOAPVersion

      public void setSOAPVersion(String soapVersion)
    • setProcessMTOM

      public void setProcessMTOM(boolean processMTOM)
      Specify whether MTOM messages should be processed or parsed literally.

      The way MTOM messages are handled fundamentally differs between Axiom and SAAJ. While Axiom replaces xop:Include elements by DataHandler backed OMText nodes, there is no such requirement in SAAJ. The only requirement there is that SOAPMessage.getAttachment(jakarta.xml.soap.SOAPElement) returns the relevant AttachmentPart when applied to an xop:Include element.

      This method allows to make this SAAJ implementation behave as Axiom, i.e. to substitute xop:Include elements.

      Parameters:
      processMTOM - whether xop:Include elements should be substituted