Потребитель для одной из моих веб-служб SOAP не может прочитать ошибки SOAP (проверки схемы) и, следовательно, он хочет, чтобы мы вместо этого отправили ответ «Ok = false» с сообщением об ошибке проверки схемы.
Я не уверен, можем ли мы каким-либо образом настроить перехватчики для генерации ложного ответа вместо ошибок SOAP.
Я использую перехватчики для генерации ошибок на сегодняшний день, как показано ниже.
@org.apache.cxf.interceptor.InInterceptors(interceptors = {"com.xxx.piano.services.interceptors.RequestParserInterceptor",
"com.xxx.piano.services.interceptors.RequestInterceptor"})
@SchemaValidation(type = SchemaValidation.SchemaValidationType.IN)
@org.apache.cxf.interceptor.OutFaultInterceptors(classes = RequestParsingValidator.class)
На сегодняшний день я получаю ошибку, как показано ниже
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>[City is empty !] </faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Пока я хочу что-то вроде ниже:
<ns3:XXXServiceTypeResponse>
<OK>false</OK>
<Error>
<Message>Duplicate Product Individual Identifier.</Message>
<TechnicalDescription>Postal Code Missing</TechnicalDescription>
<ErrorCode>E0022</ErrorCode>
</Error>
<ns3:ResponseID>01202662-0010-0001-0001-4617844469</ns3:ResponseID>
</ns3:XXXServiceTypeResponse>
Пожалуйста помоги.
AbstractPhaseInterceptor
(общий) илиAbstractSoapInterceptor
, получите полезную нагрузку, проанализируйте данные и составьте новое сообщение SOAP. Вашему клиенту также потребуется проанализировать сообщение напрямую, потому что, поскольку формат сообщения отсутствует в WSDL, его язык программирования не будет генерировать соответствующий код, поэтому он вызовет исключение. 29.12.2016