Проверьте, какой тип HTTP-ответа вы получаете при получении Soap Fault. У меня была такая же проблема, когда SOAP Fault отвечает, используя HTTP 200 вместо HTTP 500. Тогда вы получите:
JAXB - неумышленное исключение; вложенное исключение
javax.xml.bind.UnmarshalException
При изменении настроек ошибки соединения WebServiceTemplate, как показано ниже:
WebServiceTemplate webServiceTemplate = getWebServiceTemplate();
webServiceTemplate.setCheckConnectionForFault(false);
тогда вы можете правильно поймать SoapFaultClientException