Потребитель для одного из моих веб-служб SOAP не может прочитать ошибки SOAP (проверки схемы), и поэтому он хочет, чтобы мы отправили ответ «Ok = false» вместо сообщения об ошибке проверки схемы.Можно ли отправить ответ «False» от Interceptors в Apache CXF и Spring SOAP WS?
Я не уверен, что мы каким-либо образом можем настроить перехватчики, чтобы генерировать ложный ответ вместо SOAP Faults.
Я использую перехватчик для генерации ошибки на сегодняшний день, как показано ниже
@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="http://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>
Пожалуйста, помогите.
Не уверен, что, если я правильно понял @pedrofb. Вы имели в виду, что мы должны попытаться преобразовать ошибки в объект ответа. Но потребитель здесь не может разобрать ошибки в моем случае. :( –
Уверен, что мой английский не слишком хорош. Я предлагаю не использовать ошибки и изменять объектную модель. Вместо того, чтобы поднимать ошибку в логике вашей логики, поймайте исключение и верните код ошибки в качестве атрибута возвращаемого объекта. Включите этот атрибут в каждое из ваших сообщений ответа. Эта схема очень распространена в мыле, чтобы избежать использования ошибок (я предпочитаю использовать ошибки, если это возможно) – pedrofb
Спасибо. , но затем я хочу построить стандартный ответ для сбоев сообщений проверки. I прочитали в другом месте, что невозможно создать сообщения ServiceResponse от CXF Interceptors. Будет здорово, если вы сможете объяснить, что это хороший способ сделать это. –