public abstract class MessageFactory extends Object
A factory for creating SOAPMessage
objects.
A SAAJ client can create a MessageFactory
object using the method newInstance
, as shown in the following lines of code.
MessageFactory mf = MessageFactory.newInstance(); MessageFactory mf12 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
All MessageFactory
objects, regardless of how they are created, will produce SOAPMessage
objects that have the following elements by default:
SOAPPart
object SOAPEnvelope
object SOAPBody
object SOAPHeader
object 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()
createMessage(MimeHeaders, java.io.InputStream)
-- message has content from the InputStream
object and headers from the MimeHeaders
object public MessageFactory()
public static MessageFactory newInstance() throws SOAPException
Creates a new MessageFactory
object that is an instance of the default implementation (SOAP 1.1), This method uses the following ordered lookup procedure to determine the MessageFactory implementation class to load:
MessageFactory
SOAPException
- if there was an error in creating the default implementation of the MessageFactory
.SAAJMetaFactory
public static MessageFactory newInstance(String protocol) throws SOAPException
Creates a new MessageFactory
object that is an instance of the specified implementation. May be a dynamic message factory, a SOAP 1.1 message factory, or a SOAP 1.2 message factory. A dynamic message factory creates messages based on the MIME headers specified as arguments to the createMessage
method. This method uses the SAAJMetaFactory to locate the implementation class and create the MessageFactory instance.
protocol
- a string constant representing the class of the specified message factory implementation. May be either DYNAMIC_SOAP_PROTOCOL
, DEFAULT_SOAP_PROTOCOL
(which is the same as) SOAP_1_1_PROTOCOL
, or SOAP_1_2_PROTOCOL
.MessageFactory
SOAPException
- if there was an error in creating the specified implementation of MessageFactory
.SAAJMetaFactory
public abstract SOAPMessage createMessage() throws 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.
SOAPMessage
objectSOAPException
- if a SOAP error occursUnsupportedOperationException
- if the protocol of this MessageFactory
instance is DYNAMIC_SOAP_PROTOCOL
public abstract SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPException
Internalizes the contents of the given InputStream
object into a new SOAPMessage
object and returns the SOAPMessage
object.
in
- the InputStream
object that contains the data for a messageheaders
- the transport-specific headers passed to the message in a transport-independent fashion for creation of the messageSOAPMessage
object containing the data from the given InputStream
objectIOException
- if there is a problem in reading data from the input streamSOAPException
- may be thrown if the message is invalidIllegalArgumentException
- if the MessageFactory
requires one or more MIME headers to be present in the headers
parameter and they are missing. MessageFactory
implementations for SOAP_1_1_PROTOCOL
or SOAP_1_2_PROTOCOL
must not throw IllegalArgumentException
for this reason.
© 1993–2017, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.