public class AxiomSoapMessageFactory extends Object implements SoapMessageFactory, InitializingBean
WebServiceMessageFactory
interface. Creates AxiomSoapMessages
.
To increase reading performance on the SOAP request created by this message factory, you can set the payloadCaching
property to false
(default is true
). This this
will read the contents of the body directly from the stream. However, when this setting is enabled, the
payload can only be read once. This means that any endpoint mappings or interceptors which are based on the
message payload (such as the PayloadRootAnnotationMethodEndpointMapping
, the PayloadValidatingInterceptor
, or
the PayloadLoggingInterceptor
) cannot be used. Instead, use an endpoint mapping that does not consume the
payload (i.e. the SoapActionAnnotationMethodEndpointMapping
).
Additionally, this message factory can cache large attachments to disk by setting the attachmentCaching
property to true
(default is false
).
Optionally, the location where attachments are stored can be defined via the attachmentCacheDir
property (defaults to the system temp file path).
Mostly derived from org.apache.axis2.transport.http.HTTPTransportUtils
and
org.apache.axis2.transport.TransportUtils
, which we cannot use since they are not part of the Axiom
distribution.
AxiomSoapMessage
,
setPayloadCaching(boolean)
Constructor and Description |
---|
AxiomSoapMessageFactory() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet() |
AxiomSoapMessage |
createWebServiceMessage()
Creates a new, empty
SoapMessage . |
AxiomSoapMessage |
createWebServiceMessage(InputStream inputStream)
Reads a
SoapMessage from the given input stream. |
protected XMLInputFactory |
createXmlInputFactory()
Create a
XMLInputFactory that this resolver will use to create XMLStreamReader objects. |
protected String |
getCharSetEncoding(String contentType)
Returns the character set from the given content type.
|
void |
setAttachmentCacheDir(File attachmentCacheDir)
Sets the directory where SOAP attachments will be stored.
|
void |
setAttachmentCacheThreshold(int attachmentCacheThreshold)
Sets the threshold for attachments caching, in bytes.
|
void |
setAttachmentCaching(boolean attachmentCaching)
Indicates whether SOAP attachments should be cached or not.
|
void |
setLangAttributeOnSoap11FaultString(boolean langAttributeOnSoap11FaultString)
Defines whether a
xml:lang attribute should be set on SOAP 1.1 <faultstring> elements. |
void |
setPayloadCaching(boolean payloadCaching)
Indicates whether the SOAP Body payload should be cached or not.
|
void |
setReplacingEntityReferences(boolean replacingEntityReferences)
Sets whether internal entity references should be replaced with their replacement
text and report them as characters.
|
void |
setSoapVersion(SoapVersion version)
Sets the SOAP Version used by this factory.
|
void |
setSupportingExternalEntities(boolean supportingExternalEntities)
Sets whether external parsed entities should be resolved.
|
String |
toString() |
public void setPayloadCaching(boolean payloadCaching)
true
.
Setting this to false
will increase performance, but also result in the fact that the message
payload can only be read once.
public void setAttachmentCaching(boolean attachmentCaching)
false
.
Setting this to true
will cause Axiom to store larger attachments on disk, rather than in memory.
This decreases memory consumption, but decreases performance.
public void setAttachmentCacheDir(File attachmentCacheDir)
attachmentCaching
is set to true
.
The parameter should be an existing, writable directory. This property defaults to the temporary directory of the
operating system (i.e. the value of the java.io.tmpdir
system property).
public void setAttachmentCacheThreshold(int attachmentCacheThreshold)
attachment cache directory
. Only used when attachmentCaching
is set to true
.
Defaults to 4096 bytes (i.e. 4 kilobytes).
public void setSoapVersion(SoapVersion version)
SoapMessageFactory
setSoapVersion
in interface SoapMessageFactory
version
- the version constantSoapVersion.SOAP_11
,
SoapVersion.SOAP_12
public void setLangAttributeOnSoap11FaultString(boolean langAttributeOnSoap11FaultString)
xml:lang
attribute should be set on SOAP 1.1 <faultstring>
elements.
The default is true
, to comply with WS-I, but this flag can be set to false
to the older W3C SOAP
1.1 specification.
public void setReplacingEntityReferences(boolean replacingEntityReferences)
public void setSupportingExternalEntities(boolean supportingExternalEntities)
public void afterPropertiesSet() throws Exception
afterPropertiesSet
in interface InitializingBean
Exception
public AxiomSoapMessage createWebServiceMessage()
SoapMessageFactory
SoapMessage
.createWebServiceMessage
in interface SoapMessageFactory
createWebServiceMessage
in interface WebServiceMessageFactory
public AxiomSoapMessage createWebServiceMessage(InputStream inputStream) throws IOException
SoapMessageFactory
SoapMessage
from the given input stream.
If the given stream is an instance of TransportInputStream
, the headers will be read from the request.
createWebServiceMessage
in interface SoapMessageFactory
createWebServiceMessage
in interface WebServiceMessageFactory
inputStream
- the input stream to read the message fromIOException
- if an I/O exception occursprotected String getCharSetEncoding(String contentType)
protected XMLInputFactory createXmlInputFactory()
XMLInputFactory
that this resolver will use to create XMLStreamReader
objects.
Can be overridden in subclasses, adding further initialization of the factory. The resulting factory is cached, so this method will only be called once.
By default this method creates a standard XMLInputFactory
and configures it
based on the replacingEntityReferences
and supportingExternalEntities
properties.