Skip to content

IllegalArgumentException on AxiomSoap11Body.addFault [SWS-545] #671

@gregturn

Description

@gregturn

Jeremy Hare opened SWS-545 and commented

I have created a custom ExceptionResolver below:

public class MyExceptionResolver  extends AbstractSoapFaultDefinitionExceptionResolver {
	@Override
protected SoapFaultDefinition getFaultDefinition(Object endpoint,
		Exception ex) {		
	QName messageDeliveryFaultQName = new QName(INVOKER_NS_URI, "MessageDeliveryFault", "invoker");
	QName messageDeliveryFaultQNameNOPREFIX = new QName(INVOKER_NS_URI, "MessageDeliveryFault");

	if (ex instanceof WebServiceTransportException) {
		SoapFaultDefinition soapFaultDefinition = new SoapFaultDefinition();
		soapFaultDefinition.setFaultCode(messageDeliveryFaultQNameNOPREFIX );
			
		soapFaultDefinition.setFaultStringOrReason(ex.getMessage());	
		return soapFaultDefinition;
	}
	return null;
}
}

if I use the messageDeliveryFaultQNameNOPREFIX Qname as the fault code I get:

java.lang.IllegalArgumentException: Could not resolve namespace of code [{urn:www.thiess.com.au:services:eProcurement:QuadremInvoker:v1}MessageDeliveryFault]
	at org.springframework.ws.soap.axiom.AxiomSoap11Body.setValueText(AxiomSoap11Body.java:117)
	at org.springframework.ws.soap.axiom.AxiomSoap11Body.addFault(AxiomSoap11Body.java:92)
	at org.springframework.ws.soap.server.endpoint.AbstractSoapFaultDefinitionExceptionResolver.resolveExceptionInternal(AbstractSoapFaultDefinitionExceptionResolver.java:89)
	at org.springframework.ws.server.endpoint.AbstractEndpointExceptionResolver.resolveException(AbstractEndpointExceptionResolver.java:106)
	at org.springframework.ws.server.MessageDispatcher.processEndpointException(MessageDispatcher.java:311)
	at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:235)
	at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:168)
	at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
	at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57)
	at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:230)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:523)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:463)

The other Qname with a prefix works fine.


Affects: 1.5.7

Referenced from: commits ceac50a

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions