Allow anonymous WS-Addressing replies without MessageID
Corrected Spring WS's WS-Addressing 1.0 required-property validation so `MessageID` is required only when `ReplyTo` or `FaultTo` targets a non-anonymous, non-none endpoint.
spring-projects/spring-ws · #1848
SOAP interoperability fix
Spring Web Services now accepts valid WS-Addressing 1.0 requests without `MessageID` when replies are synchronous, anonymous, or intentionally discarded.
Problem
Spring WS defaults a missing `ReplyTo` to the anonymous endpoint, but its validation treated every non-null endpoint as requiring `MessageID`. Valid synchronous requests and requests whose response should be discarded were therefore rejected.
Approach
Updates `Addressing10.hasRequiredProperties` to distinguish anonymous and none endpoints from out-of-band destinations, with request and response fixtures covering explicit anonymous, implicit anonymous, none, and anonymous reply-plus-fault addressing.
Impact and scope
- Restores standards-aligned handling for common synchronous SOAP request-response exchanges.
- Allows fire-and-forget requests using the WS-Addressing none endpoint without an unnecessary message identifier.
- Keeps `MessageID` enforcement for destinations where asynchronous reply or fault correlation is actually required.
Validation
- Added focused XML fixtures and interceptor regressions for explicit anonymous `ReplyTo`, missing `ReplyTo`, none `ReplyTo`, and anonymous reply and fault endpoints without `MessageID`.
- The focused Addressing 1.0 tests, full WS-Addressing package tests, `spring-ws-core` test suite, and module check completed successfully before merge.
- A Spring maintainer polished and merged the authored fix, closed GH-1427, and publicly thanked Goutam. The maintainer-created merge commit is unsigned, so no verified-signature claim is made.