org.springframework.ws.soap.addressing.server.AddressingEndpointInterceptor creates the org.springframework.ws.soap.addressing.core.MessageAddressingProperties of the request using org.springframework.ws.soap.addressing.version.AddressingVersion.getMessageAddressingProperties(SoapMessage), and then checks if the required properties are present using org.springframework.ws.soap.addressing.version.AddressingVersion.hasRequiredProperties(MessageAddressingProperties)

getMessageAddressingProperties defaults replyTo and faultTo to anonymous (based in org.springframework.ws.soap.addressing.version.Addressing10.getDefaultReplyTo(EndpointReference)) thus when org.springframework.ws.soap.addressing.version.Addressing10.hasRequiredProperties(MessageAddressingProperties) is called the replyTo and faultTo are never null, but the code only checks if they are not null in order to require messageId.

The code should probably also check is they are anonymous (since anonymous URIs will results in a synchronous response, and not an out of band response) or none address (since reply will be discarded).

Comment From: snicoll

@greenman18523 the code you referenced is part of Spring Web Services, the issue tracker is https://github.com/spring-projects/spring-ws/

Please report that issue there.