Spring Web Services Framework

org.springframework.ws.soap.axiom
Class AxiomSoapMessageFactory

java.lang.Object
  extended by org.springframework.ws.soap.axiom.AxiomSoapMessageFactory
All Implemented Interfaces:
InitializingBean, SoapMessageFactory, WebServiceMessageFactory

public class AxiomSoapMessageFactory
extends Object
implements SoapMessageFactory, InitializingBean

Axiom-specific implementation of the WebServiceMessageFactory interface. Creates AxiomSoapMessages.

To increase reading performance on the 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 PayloadRootQNameEndpointMapping, the PayloadValidatingInterceptor, or the PayloadLoggingInterceptor) cannot be used. Instead, use an endpoint mapping that does not consume the payload (i.e. the SoapActionEndpointMapping).

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.

Since:
1.0.0
Author:
Arjen Poutsma
See Also:
AxiomSoapMessage, setPayloadCaching(boolean)

Constructor Summary
AxiomSoapMessageFactory()
           
 
Method Summary
 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 setSoapVersion(SoapVersion version)
          Sets the SOAP Version used by this factory.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AxiomSoapMessageFactory

public AxiomSoapMessageFactory()
Method Detail

setPayloadCaching

public void setPayloadCaching(boolean payloadCaching)
Indicates whether the SOAP Body payload should be cached or not. Default is true.

Setting this to false will increase performance, but also result in the fact that the message payload can only be read once.


setAttachmentCaching

public void setAttachmentCaching(boolean attachmentCaching)
Indicates whether SOAP attachments should be cached or not. Default is 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.


setAttachmentCacheDir

public void setAttachmentCacheDir(File attachmentCacheDir)
Sets the directory where SOAP attachments will be stored. Only used when 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).


setAttachmentCacheThreshold

public void setAttachmentCacheThreshold(int attachmentCacheThreshold)
Sets the threshold for attachments caching, in bytes. Attachments larger than this threshold will be cached in the attachment cache directory. Only used when attachmentCaching is set to true.

Defaults to 4096 bytes (i.e. 4 kilobytes).


setSoapVersion

public void setSoapVersion(SoapVersion version)
Description copied from interface: SoapMessageFactory
Sets the SOAP Version used by this factory.

Specified by:
setSoapVersion in interface SoapMessageFactory
Parameters:
version - the version constant
See Also:
SoapVersion.SOAP_11, SoapVersion.SOAP_12

setLangAttributeOnSoap11FaultString

public void setLangAttributeOnSoap11FaultString(boolean langAttributeOnSoap11FaultString)
Defines whether a 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.

See Also:
WS-I Basic Profile 1.1

afterPropertiesSet

public void afterPropertiesSet()
                        throws Exception
Specified by:
afterPropertiesSet in interface InitializingBean
Throws:
Exception

createWebServiceMessage

public AxiomSoapMessage createWebServiceMessage()
Description copied from interface: SoapMessageFactory
Creates a new, empty SoapMessage.

Specified by:
createWebServiceMessage in interface SoapMessageFactory
Specified by:
createWebServiceMessage in interface WebServiceMessageFactory
Returns:
the empty message

createWebServiceMessage

public AxiomSoapMessage createWebServiceMessage(InputStream inputStream)
                                         throws IOException
Description copied from interface: SoapMessageFactory
Reads a SoapMessage from the given input stream.

If the given stream is an instance of TransportInputStream, the headers will be read from the request.

Specified by:
createWebServiceMessage in interface SoapMessageFactory
Specified by:
createWebServiceMessage in interface WebServiceMessageFactory
Parameters:
inputStream - the input stream to read the message from
Returns:
the created message
Throws:
IOException - if an I/O exception occurs

getCharSetEncoding

protected String getCharSetEncoding(String contentType)
Returns the character set from the given content type. Mostly copied

Returns:
the character set encoding

createXmlInputFactory

protected XMLInputFactory createXmlInputFactory()
Create a 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.

Returns:
the created factory

toString

public String toString()
Overrides:
toString in class Object

Spring Web Services Framework

Copyright © 2005-2013 The Spring Web Services Framework. All Rights Reserved.