If an interceptor returns false (which is the case for the PayloadValidatingInterceptor in the case of a validation error) not further interceptor will be executed. So you have to add the PayloadLoggingInterceptor twice - one for request logging (before the PayloadValidatingInterceptor) and one for response logging (after the PayloadValidatingInterceptor). This is how I did it:
Code:
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
<property name="interceptors">
<list>
<bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor">
<property name="logRequest" value="true"/>
<property name="logResponse" value="false"/>
</bean>
<bean class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
<property name="schemas">
<!-- ... -->
</property>
<property name="validateRequest" value="true"/>
<property name="validateResponse" value="true"/>
</bean>
<bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor">
<property name="logRequest" value="false"/>
<property name="logResponse" value="true"/>
</bean>
</list>
</property>
</bean>
HTH
Oliver