diff --git a/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java b/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java
index d03cb488..07fda156 100644
--- a/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java
+++ b/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java
@@ -89,7 +89,7 @@ public class AxiomSoapMessageFactory implements SoapMessageFactory, Initializing
private static final Log logger = LogFactory.getLog(AxiomSoapMessageFactory.class);
- private final XMLInputFactory inputFactory = createXmlInputFactory();
+ private XMLInputFactory inputFactory;
private boolean payloadCaching = true;
@@ -104,6 +104,10 @@ public class AxiomSoapMessageFactory implements SoapMessageFactory, Initializing
private boolean langAttributeOnSoap11FaultString = true;
+ private boolean replacingEntityReferences = false;
+
+ private boolean supportingExternalEntities = false;
+
/**
* Indicates whether the SOAP Body payload should be cached or not. Default is true.
@@ -177,7 +181,24 @@ public class AxiomSoapMessageFactory implements SoapMessageFactory, Initializing
this.langAttributeOnSoap11FaultString = langAttributeOnSoap11FaultString;
}
- @Override
+ /**
+ * Sets whether internal entity references should be replaced with their replacement
+ * text and report them as characters.
+ * @see XMLInputFactory#IS_REPLACING_ENTITY_REFERENCES
+ */
+ public void setReplacingEntityReferences(boolean replacingEntityReferences) {
+ this.replacingEntityReferences = replacingEntityReferences;
+ }
+
+ /**
+ * Sets whether external parsed entities should be resolved.
+ * @see XMLInputFactory#IS_SUPPORTING_EXTERNAL_ENTITIES
+ */
+ public void setSupportingExternalEntities(boolean supportingExternalEntities) {
+ this.supportingExternalEntities = supportingExternalEntities;
+ }
+
+ @Override
public void afterPropertiesSet() throws Exception {
if (logger.isInfoEnabled()) {
logger.info(payloadCaching ? "Enabled payload caching" : "Disabled payload caching");
@@ -186,6 +207,7 @@ public class AxiomSoapMessageFactory implements SoapMessageFactory, Initializing
String tempDir = System.getProperty("java.io.tmpdir");
setAttachmentCacheDir(new File(tempDir));
}
+ inputFactory = createXmlInputFactory();
}
@Override
@@ -197,6 +219,9 @@ public class AxiomSoapMessageFactory implements SoapMessageFactory, Initializing
public AxiomSoapMessage createWebServiceMessage(InputStream inputStream) throws IOException {
Assert.isInstanceOf(TransportInputStream.class, inputStream,
"AxiomSoapMessageFactory requires a TransportInputStream");
+ if (inputFactory == null) {
+ inputFactory = createXmlInputFactory();
+ }
TransportInputStream transportInputStream = (TransportInputStream) inputStream;
String contentType = getHeaderValue(transportInputStream, TransportConstants.HEADER_CONTENT_TYPE);
if (!StringUtils.hasLength(contentType)) {
@@ -329,11 +354,18 @@ public class AxiomSoapMessageFactory implements SoapMessageFactory, Initializing
*