無効な SOAP リクエストは Web サービス メソッドに到達しませんが、SOAP に関しては、有効なリクエストを送信する責任はクライアントにあります。そうでない場合は、あなたのコードではなく、コードにバグがあります。
ただし、無効なリクエストをログに記録したい場合は、Log4J (またはフックしたログ フレームワーク) を使用できます。SoapEnvelopeLoggingInterceptor コードを見ると、SOAP 障害のデバッグ レベルのロギングが実装されていることがわかります。
https://github.com/spring-projects/spring-ws/blob/master/core/src/main/java/org/springframework/ws/soap/server/endpoint/interceptor/SoapEnvelopeLoggingInterceptor.java?source=cc
public boolean handleFault(MessageContext messageContext, Object endpoint) throws Exception {
if (logFault && logger.isDebugEnabled()) {
logMessageSource("Fault: ", getSource(messageContext.getResponse()));
}
return true;
}
そのため、SOAP 障害を独自のファイルに記録するように構成することで、失敗した要求の何らかの監査を行うことができます。そのファイルを監視して、その中のエントリが警告を発するようにすることもできます。
<appender name="soapFaultAppender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/var/log/myapp/soap-faults.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %p [%c{3}] %m%n" />
</layout>
</appender>
<appender name="async" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="1024"/>
<appender-ref ref="soapFaultAppender"/>
</appender>
<logger name="org.springframework.ws.soap.server.endpoint.interceptor">
<level value="debug" />
</logger>