Confluence and SOAP on Resin
The content on this page relates to platforms that are not supported for Confluence. Consequently, Atlassian can not guarantee providing any support for the steps described on this page. Please be aware that this material is provided for your information only, and that you use it at your own risk.
Symptom
The WSDL generated by Confluence on the Resin application server is invalid. Attempting to parse it gives you an error like this (using Axis as the client):
WSDLException (at /wsdl:definitions/types): faultCode=INVALID_WSDL: Encountered illegal extension element 'types' in the context of a 'javax.wsdl.Definition'. Extension elements must be in a namespace other than WSDL's.:
Cause
The default XML parser included with the Resin application server is incompatible with the Axis SOAP library, and causes Axis to generate an invalid WSDL file. You can find information about this on Apache's JIRA instance.
Solution
The solution is to override Resin's default XML parser by placing the following within the <server>
section of resin.conf
:
<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
(You can also make this configuration per web-app by putting it in the <web-app>
section. For more information see this page: JAXP - specifying XML and XSLT implementations)
The Confluence issue for this error is at CONF-5953.