0
pylyptiy
27.04.22
✎
13:11
|
Каким образом можно вызвать свое самописное исключение в методе вебсервиса, и пометить метод так что он может его выбрасывать, чтобы в итоге в wsdl получить соответствующий блок для данного метода? к примеру как здесь:
<wsdl:operation name="changeMassageStatusNotification">
<soap:operation soapAction=""/>
<wsdl:input name="changeMassageStatusNotificationRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="changeMassageStatusNotificationResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="changeMassageStatusNotificationFault">
<soap:fault name="changeMassageStatusNotificationFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
т.е. для метода хотим видеть блок <wsdl:fault> для нормальной обработки ошибок клиентским кодом. Необходимо именно свое самописное, т.к. нужны свои поля для доп информации, а простой вызов вызватьИсключение - бросает стандартное исключение как если бы это произошло в рантайме, а также в message не перетирает стэктрейс системы 1с, а добавляет к нему текст ошибки который ему дали в констукторе, что крайне не подходит для клиента. Плюс такой вызов не генерирует в wsdl блок <wsdl:fault> (видимо где то нужно отдельно помечать что метод может выбросить такое то исключение) что приводит к тому что клиент не знает что его может ждать при вызове этого метода, и приходится обобщенно оборачивать в обработку любого исключения.
|
|
2
pylyptiy
27.04.22
✎
13:35
|
(1) А как тогда принято в инфраструктуре 1с писать подобные вещи? клиентский код является java-приложением, коим разработчиком я и являюсь. Какие типовые решения пишутся для ответов об ошибках в 1с ws? Это же полный мрак в модель бизнес-нагрузки пихать какие то error поля и заполнять их в случае необходимости. Какие могут быть другие решения?
|
|