<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:wsdl="http://schemas. xmlsoap. org/wsdl/" xmlns:soap="http://schemas. xmlsoap. org/wsdl/soap/" xmlns:http="http://schemas. xmlsoap. org/wsdl/http/" xmlns:xs="http://www. w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas. xmlsoap. org/soap/encoding/" xmlns:mime="http://schemas. xmlsoap. org/wsdl/mime/" xmlns:xsi="http://www. w3.org/2001/XMLSchema-instance" xmlns:tns="urn://x-artefacts-smev-gov-ru/smev/1.0" targetNamespace="urn://x-artefacts-smev-gov-ru/smev/1.0"> <wsdl:types> <xs:schema> <xs:import namespace="urn://x-artefacts-smev-gov-ru/smev/1.0" schemaLocation="PushMessageSchema. xsd"/> </xs:schema> </wsdl:types> <wsdl:message name="PushNotificationRequest"> <wsdl:part name="parameter" element="tns:PushNotificationRequest"/> </wsdl:message> <wsdl:message name="PushNotificationResponse"> <wsdl:part name="parameter" element="tns:PushNotificationResponse"/> </wsdl:message> <wsdl:message name="PushNotificationException"> <wsdl:part name="parameter" element="tns:PushNotificationException"/> </wsdl:message> <wsdl:portType name="PushNotificationType"> <wsdl:operation name="PushNotification"> <wsdl:input name="PushNotificationRequest" message="tns:PushNotificationRequest"/> <wsdl:output name="PushNotificationResponse" message="tns:PushNotificationResponse"/> <wsdl:fault name="PushNotificationException" message="tns:PushNotificationException"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PushNotificationBinding" type="tns:PushNotificationType"> <soap:binding style="document" transport="http://schemas. xmlsoap. org/soap/http"/> <wsdl:operation name="PushNotification"> <soap:operation soapAction=" PushNotification "/> <wsdl:input name="PushNotificationRequest"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="PushNotificationResponse"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="PushNotificationException"> <soap:fault name="PushNotificationException" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="PushNotificationService"> <wsdl:port name="PushNotificationPort" binding="tns:PushNotificationBinding"> <soap:address location="ServiceAdress"/> </wsdl:port> </wsdl:service> </wsdl:definitions> |
Рисунок 45 – wsdl-описание web-сервиса сервиса приема push-уведомлений
Если СМЭВ вследствие проблем на стороне информационной системы не может осуществить отправку сервису приема push-уведомлений push-нотификаций, то эти push-нотификации СМЭВ помещает в очередь ответов информационной системы. В этом случае для получения push-нотификаций из статусной очереди информационной системе следует вызвать метод GetResponse.
Использование клиентской библиотеки и набора «TOOLSET»
Для помощи участникам взаимодействия в разработке информационного взаимодействия ИС со СМЭВ предоставляется клиентская библиотека и набор «toolset», которые входят в состав набора шаблонов электронных сервисов.
Клиентская библиотека подключается к проекту ИС в среде разработки и предоставляет набор методов, с помощью которых осуществляется разработка программной логики процесса информационного взаимодействия со СМЭВ. При этом дорабатываемая ИС должна быть разработана средствами программной платформы jdk. Описание методов клиентской библиотеки предоставляется в виде «javadocs», который входит в состав набора шаблонов электронных сервисов.
Набор «toolset» представляет собой набор отдельных приложений, которые предоставляют платформонезависимые интерфейсы взаимодействия с ИС и запускаются на платформе jre. Каждое приложение набора предоставляет готовое решение, инкапсулирующее часть логики процесса информационного взаимодействия со СМЭВ3.х, которое может быть использовано при доработке ИС УВ. При этом дорабатываемая ИС УВ может быть разработана средствами любой программной платформы. Состав набора, требования к необходимому ПО для функционирования набора и порядок его запуска приведены в приложении З.
При подписании XML-фрагментов ЭП в формате XMLDSig, обязательно использование трансформации urn://smev-gov-ru/xmldsig/transform. Ее алгоритм:
XML declaration и processing instructions, если есть, вырезаются:вход:
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/css" href="style. css"?>
<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>
выход:
<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>
вход:
<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>
выход:
<qwe xmlns="http://t. e.s. t"><myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty><iop value="yes, yes!"/>
</qwe>
вход:
<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>
выход:
<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"></iop>
</qwe>
вход:
<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>
выход:
<ns1:qwe xmlns:ns1="http://t. e.s. t">
<ns2:rty xmlns:ns2="http://y. e.s">yes!</ns2:rty>
<ns1:iop value="yes, yes!"></ns1:iop>
</ns1:qwe>
вход:
<nns:x xmlns:nns="http://a" attrB="value1" attrA="value2">
<y xmlns="http://a">yes!</y>
</nns:x>
выход:
<ns1:x xmlns:ns1="http://a" attrA="value2" attrB="value1">
<ns1:y>yes!</ns1:y>
</ns1:x>
Развернутый пример результата трансформации urn://smev-gov-ru/xmldsig/transform представлен в приложении бразцовая реализация алгоритма на Java для Apache Santuario представлена в приложении Г.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |


