Мне нужно создать веб-службу SOAP, которая принимает запрос SOAP и отправляет ответный ответ.Я хочу, чтобы сервис был максимально легким.Он может быть написан на Java или Python.
Мне дали .WSDL и соответствующий .XSD для сервиса.Сервис представляет собой упрощенную реализацию стандарта WS-Notification.Я не могу контролировать содержимое этих файлов.
WSDL не содержит определения службы.
Вот WSDL:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions name="WS-BaseNotification"
targetNamespace="http://www.example.com/wsdl/notification"
xmlns:wsntw="http://www.example.com/wsdl/notification"
xmlns:wsnt="http://www.example.com/schema/notification"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<!-- ===================== Types Definitions ====================== -->
<wsdl:types>
<xsd:schema>
<xsd:import
namespace="http://www.example.com/schema/notification"
schemaLocation="Notification.xsd"/>
</xsd:schema>
</wsdl:types>
<!-- ================ NotificationConsumer::Notify ================
Notify(
NotificationMessage
(SubscriptionReference, TopicExpression, ProducerReference,
Message)*
returns: Ack
-->
<wsdl:message name="Notify">
<wsdl:part name="Notify" element="wsnt:Notify"/>
</wsdl:message>
<wsdl:message name="Acknowledge">
<wsdl:part name="Acknowledge" element="wsnt:Acknowledge"/>
</wsdl:message>
<wsdl:message name="Fault">
<wsdl:part name="Fault" element="wsnt:Fault"/>
</wsdl:message>
<!-- ========= NotificationConsumer PortType Definition =========== -->
<wsdl:portType name="NotificationConsumer">
<wsdl:operation name="Notify">
<wsdl:input message="wsntw:Notify" />
<wsdl:output message="wsntw:Acknowledge" />
<wsdl:fault message="wsntw:Fault" name="fault1"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
А вот XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:wsnt="http://www.example.com/schema/notification" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/schema/notification" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.2">
<!--This XSD defined the types and elements used for the ERCOT Notification interfaces-->
<!---->
<!-- ================== Message Helper Types ===================== -->
<xsd:complexType name="NotificationMessageHolderType">
<xsd:sequence>
<xsd:element name="Message">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any" processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="NotificationMessage" type="wsnt:NotificationMessageHolderType"/>
<!-- ========== Message Types for NotificationConsumer =========== -->
<xsd:element name="Notify">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="wsnt:NotificationMessage" maxOccurs="unbounded"/>
<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Acknowledge">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ReplyCode" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Fault">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FaultCode" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Как создать веб-сервис из этих 2 файлов?
Я попробовал следующее:
- В Eclipse создайте динамический веб-проекти импортировать веб-сервис.Я получаю сообщение об ошибке «Notification.wsdl не имеет элемента службы».
- Использование WSDL2Java: я получаю сообщение об ошибке «Notification.wsdl не определяет никакие службы»
Я действительно запутался в том, как я могу реализовать этот сервис, используя Java или Python.
Любая помощь очень ценится!