Добавил:
Кафедра ВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab5.docx
Скачиваний:
7
Добавлен:
08.04.2023
Размер:
421.65 Кб
Скачать
  1. МИНОБРНАУКИ РОССИИ

  2. САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

  3. ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

  4. «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

  5. Кафедра Вычислительной техники

ОТЧЁТ

по лабораторной работе №5

по дисциплине «Распределённые системы»

  1. Тема: ВЕБ-СЛУЖБЫ

Студенты гр.

Преподаватель

Бекенёва Я.А.

Оглавление

1. Введение 3

1.1. Введение 3

1.2. Порядок выполнения работы 3

1.2.1. Основные понятия 3

1.2.2. Создание и тестирование веб службы в IDE NetBeans 5

2. Тексты программ 7

2.1. Bank.java 7

2.2. BankIncapsulation.java 9

2.3. BankService.java 11

2.4. BankServiceImplementation.java 12

2.5. BankServiceMain.java 15

2.6. pom.xml 16

2.7. dependency-reduced-pom.xml 20

2.8. bankrequests.wsdl 22

2.9. bankrequests.xsd 27

3. Ход работы 30

4. Вывод 35

5. Список использованных источников 36

  1. 1. Введение

    1. 1.1. Введение

Тема работы: Веб-службы.

Задание на лабораторную работу: Разработать веб-службу, осуществляющую конвертацию некоторой целой величины amount в величину amount*rate, целое amount и вещественное rate задаётся пользователем. Разработать сервлет-клиент для данной службы.

    1. 1.2. Порядок выполнения работы

      1. 1.2.1. Основные понятия

Веб-служба (веб-сервис, web service) - идентифицируемая веб-адресом (URI) программная система со стандартизированными интерфейсами.

Главные особенности веб-служб:

1. Веб-службы - самодостаточны, т.е. с клиентской стороны не требуется никакого дополнительного программного обеспечения кроме языка программирования, поддерживающего работу с XML и HTTP, а на серверной стороне требуются только HTTP-сервер, поддерживающий работу с посланиями.

2. Веб-службы являются самоописываемыми, поскольку метаданные, описывают сообщения передается вместе с сообщением и не требуется никаких внешних хранилищ метаданных.

Концепция веб-служб представлена на рисунке ниже.

Рисунок 1. Концепция веб-служб

Можно выделить три инстанции, взаимодействующие в рамках веб-службы:

• заказчик;

• исполнитель;

• каталог.

Когда служба разработана, исполнитель регистрирует её в каталоге, где её могут найти потенциальные заказчики. Заказчик, найдя в каталоге подходящую службу, импортирует оттуда её WSDL-спецификацию и разрабатывает в соответствии с ней свое программное обеспечение. WSDL описывает формат запросов и ответов, которыми обмениваются заказчик и исполнитель в процессе работы.

Для обеспечения взаимодействия используются следующие стандарты:

• XML: Расширяемый язык разметки, предназначенный для хранения и передачи структурированных данных;

• SOAP: Протокол обмена сообщениями на базе XML;

• WSDL: Язык описания внешних интерфейсов веб-службы на базе XML;

• UDDI: Универсальный интерфейс распознавания, описания и интеграции - каталог веб-служб и сведений о компаниях, предоставляющих веб-службы во всеобщее пользование или конкретным компаниям.

      1. 1.2.2. Создание и тестирование веб службы в ide NetBeans

Создать веб-службу в NetBeans можно путём создания нового веб-приложения и добавления к созданному проекту веб-службы. При создании проекта на сервере GlassFish следует выбрать «Реализовать веб-службу в качестве сеансового компонента сеанса без сохранения состояния».

Созданная веб-служба имеет вид:

import javax.ejb.Stateless;

import javax.jws.WebService;

import javax.jws.WebMethod;

import javax.jws.WebParam;

@WebService(serviceName = "NewWebService") // (1)

@Stateless()

public class NewWebService {

@WebMethod(operationName = "hello") // (2)

public String hello(

@WebParam(name = "name") // (3)

String txt) {

return "Hello " + txt + " !";

}

}

Функционал веб-службы описывается в виде набора операций класса, перед описанием которого содержится строка, подобная строке (1). Перед методами, представляющими функционал веб-службы, записывается строка, подобная строке (2) листинга. Перед каждым аргументом метода записывается строка, подобная строке (3) листинга.

После того, как код веб-службы написан, её можно протестировать, если используемый сервер приложений поддерживает подобный функционал (GlassFish, идущий с NetBeans, поддерживает тестирование веб-служб). Для этого следует:

1. Кликнуть ПКМ по проекту, в котором находится тестируемая веб-служба и выполнить команду «развернуть».

2. Если разворачивание прошло успешно, то в дереве проекта найти нужную службу среди списка веб-служб, кликнуть ПКМ по ней и выполнить команду «Тестировать веб-службу».

3. После этого в браузере откроется окно, где можно осуществить непосредственное тестирование.

Клиент веб-службы представляет собой реализованный в отдельном проекте сервлет, в который требуемая веб-служба была добавлена как «клиент веб-службы».

При написании кода сервлета-клиента в редакторе следует перетащить требуемые методы веб-службы из узла «Ссылки на веб-службы» в любое место тела класса сервлета-клиента. Это добавит к классу сервлета путь к WSDL веб-службы, новое поле service и новый метод, заголовок которого совпадает с заголовком метода веб-службы. Именно через этот метод и осуществляется обращение к веб-службе.

  1. 2. Тексты программ

    1. 2.1. Bank.java

package com.github.gay.bank;

public class Bank

{

private String service;

private Integer amount; // as i understand, it's total number of the money, but integer

private Float rate; // as i understand, it's a course, persentage, but real number

private Float amountMultiplyRate;

public Bank() // all are zero by default

{

this.service = "Deposit";

this.amount = (int)0;

this.rate = (float)0;

this.amountMultiplyRate = (float)0;

}

public String getService()

{

return this.service;

}

public Integer getAmount()

{

return this.amount;

}

public Float getRate()

{

return this.rate;

}

public Float getAmountMultiplyRate()

{

amountMultiplyRate = amount * rate;

return this.amountMultiplyRate;

}

public void setService(String localService)

{

this.service = localService;

}

public void setAmount(Integer localAmount)

{

this.amount = localAmount;

}

public void setRate(Float localRate)

{

this.rate = localRate;

}

}

    1. 2.2. BankIncapsulation.java

package com.github.gay.bank;

import java.util.ArrayList;

import java.util.List;

import java.util.Optional;

public class BankIncapsulation

{

private static Bank bank = new Bank(); // all are zero by default

public String getService()

{

return bank.getService();

}

public Integer getAmount()

{

return bank.getAmount();

}

public Float getRate()

{

return bank.getRate();

}

public Float getAmountMultiplyRate()

{

return bank.getAmountMultiplyRate();

}

public void setService(String localService)

{

bank.setService(localService);

//return bank;

}

public void setAmount(Integer localAmount)

{

bank.setAmount(localAmount);

//return bank;

}

public void setRate(Float localRate)

{

bank.setRate(localRate);

//return bank;

}

}

    1. 2.3. BankService.java

package com.github.gay.soapwebservices;

import javax.jws.WebMethod;

import javax.jws.WebService;

import com.github.gay.bank.Bank;

import java.util.List;

@WebService

public interface BankService

{

@WebMethod

public String getService();

@WebMethod

public Integer getAmount();

@WebMethod

public Float getRate();

@WebMethod

public Float getAmountMultiplyRate();

@WebMethod

public String setService(String localService);

@WebMethod

public String setAmount(Integer localAmount);

@WebMethod

public String setRate(Float localRate);

}

    1. 2.4. BankServiceImplementation.java

package com.github.gay.soapwebservices;

import com.github.gay.bank.Bank;

import com.github.gay.bank.BankIncapsulation;

import javax.jws.WebMethod;

import javax.jws.WebService;

import java.util.List;

@WebService(endpointInterface = "com.github.gay.soapwebservices.BankService")

public class BankServiceImplementation implements BankService{

private static BankIncapsulation bankIncapsulation = bankIncapsulation = new BankIncapsulation();

@WebMethod

public String getService()

{

return bankIncapsulation.getService();

}

@WebMethod

public Integer getAmount()

{

return bankIncapsulation.getAmount();

}

@WebMethod

public Float getRate()

{

return bankIncapsulation.getRate();

}

@WebMethod

public Float getAmountMultiplyRate()

{

return bankIncapsulation.getAmountMultiplyRate();

}

@WebMethod

public String setService(String localService)

{

String returnValue;

if (localService instanceof String)

{

if (localService.equals("Currency") || localService.equals("Loan") || localService.equals("Debt") || localService.equals("Deposit") || localService.equals("Benefit"))

{

bankIncapsulation.setService(localService);

returnValue = "Value you've sent to the server \"" + localService.toString() + "\" has been set to variable service successfully!";

}

else

{

returnValue = "Value you've sent to the server \"" + localService.toString() + "\" is not the correct type!";

}

}

else

{

returnValue = "Value you've sent to the server \"" + localService.toString() + "\" is not the instance of type/class String!";

}

return returnValue;

//return currencyDao.setAmount(localAmount);

}

@WebMethod

public String setAmount(Integer localAmount)

{

String returnValue;

if (localAmount instanceof Integer)

{

bankIncapsulation.setAmount((int)localAmount);

returnValue = "Value you've sent to the server \"" + localAmount.toString() + "\" has been set to variable amount successfully!";

}

else

{

returnValue = "Value you've sent to the server is not the instance of type/class Integer!";

}

return returnValue;

//return bankIncapsulation.setAmount(localAmount);

}

@WebMethod

public String setRate(Float localRate)

{

String returnValue;

if (localRate instanceof Float)

{

bankIncapsulation.setRate((float)localRate);

returnValue = "Value you've sent to the server \"" + localRate.toString() + "\" has been set to variable rate successfully!";

}

else

{

returnValue = "Value you've sent to the server is not the instance of type/class Float";

}

return returnValue;

//return bankIncapsulation.setRate(localRate);

}

}

    1. 2.5. BankServiceMain.java

package com.github.gay.soapwebservices;

import javax.xml.ws.Endpoint;

public class BankServiceMain

{

public static void main(String[] args)

{

Endpoint.publish("http://localhost:8080/bankrequests", new BankServiceImplementation());

}

}

    1. 2.6. pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.github.matmambj</groupId>

<artifactId>javaWebServices</artifactId>

<version>1.0-SNAPSHOT</version>

<!-- <build>

<sourceDirectory>src/main/java</sourceDirectory>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.8.0</version>

<configuration>

<release>11</release>

</configuration>

</plugin>

</plugins>

</build> -->

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-shade-plugin</artifactId>

<version>3.4.1</version>

<executions>

<execution>

<goals>

<goal>shade</goal>

</goals>

<configuration>

<transformers>

<transformer implementation="org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer"/>

</transformers>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>

<properties>

<tomcat.version>8.0.53</tomcat.version>

<jersey.version>2.26</jersey.version>

<maven.compiler.source>1.15</maven.compiler.source>

<maven.compiler.target>1.15</maven.compiler.target>

</properties>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.13</version>

</dependency>

<!-- Jersey for REST web service -->

<dependency>

<groupId>org.glassfish.jersey.core</groupId>

<artifactId>jersey-server</artifactId>

<version>${jersey.version}</version>

</dependency>

<dependency>

<groupId>org.glassfish.jersey.core</groupId>

<artifactId>jersey-common</artifactId>

<version>${jersey.version}</version>

</dependency>

<dependency>

<groupId>org.glassfish.jersey.containers</groupId>

<artifactId>jersey-container-servlet</artifactId>

<version>${jersey.version}</version>

</dependency>

<dependency>

<groupId>org.glassfish.jersey.media</groupId>

<artifactId>jersey-media-json-jackson</artifactId>

<version>${jersey.version}</version>

</dependency>

<dependency>

<groupId>org.glassfish.jaxb</groupId>

<artifactId>jaxb-runtime</artifactId>

<version>2.4.0-b180830.0438</version>

</dependency>

<dependency>

<groupId>org.glassfish.jersey.inject</groupId>

<artifactId>jersey-hk2</artifactId>

<version>${jersey.version}</version>

</dependency>

<!-- Tomcat to test REST web service -->

<dependency>

<groupId>org.apache.tomcat.embed</groupId>

<artifactId>tomcat-embed-core</artifactId>

<version>${tomcat.version}</version>

</dependency>

<dependency>

<groupId>org.apache.tomcat.embed</groupId>

<artifactId>tomcat-embed-jasper</artifactId>

<version>${tomcat.version}</version>

</dependency>

<dependency>

<groupId>org.apache.tomcat.embed</groupId>

<artifactId>tomcat-embed-logging-juli</artifactId>

<version>${tomcat.version}</version>

</dependency>

<!-- JAXWS for SOAP web service -->

<dependency>

<groupId>com.sun.xml.ws</groupId>

<artifactId>jaxws-rt</artifactId>

<version>2.3.5</version>

<type>pom</type>

</dependency>

<dependency>

<groupId>com.sun.xml.ws</groupId>

<artifactId>rt</artifactId>

<version>2.3.5</version>

</dependency>

<dependency>

<groupId>javax.jws</groupId>

<artifactId>javax.jws-api</artifactId>

<version>1.1</version>

</dependency>

</dependencies>

</project>

    1. 2.7. dependency-reduced-pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.github.matmambj</groupId>

<artifactId>javaWebServices</artifactId>

<version>1.0-SNAPSHOT</version>

<build>

<plugins>

<plugin>

<artifactId>maven-shade-plugin</artifactId>

<version>3.4.1</version>

<executions>

<execution>

<goals>

<goal>shade</goal>

</goals>

<configuration>

<transformers>

<transformer />

</transformers>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>

<dependencies>

<dependency>

<groupId>com.sun.xml.ws</groupId>

<artifactId>jaxws-rt</artifactId>

<version>2.3.5</version>

<type>pom</type>

<scope>compile</scope>

</dependency>

</dependencies>

<properties>

<maven.compiler.target>1.15</maven.compiler.target>

<jersey.version>2.26</jersey.version>

<maven.compiler.source>1.15</maven.compiler.source>

<tomcat.version>8.0.53</tomcat.version>

</properties>

</project>

    1. 2.8. bankrequests.wsdl

<!--

Published by JAX-WS RI (https://github.com/eclipse-ee4j/metro-jax-ws). RI's version is JAX-WS RI 2.3.5 git-revision#7ddc91f.

-->

<!--

Generated by JAX-WS RI (https://github.com/eclipse-ee4j/metro-jax-ws). RI's version is JAX-WS RI 2.3.5 git-revision#7ddc91f.

-->

<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://soapwebservices.gay.github.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://soapwebservices.gay.github.com/" name="BankServiceImplementationService">

<types>

<xsd:schema>

<xsd:import namespace="http://soapwebservices.gay.github.com/" schemaLocation="http://localhost:8080/bankrequests?xsd=1"/>

</xsd:schema>

</types>

<message name="getService">

<part name="parameters" element="tns:getService"/>

</message>

<message name="getServiceResponse">

<part name="parameters" element="tns:getServiceResponse"/>

</message>

<message name="getAmount">

<part name="parameters" element="tns:getAmount"/>

</message>

<message name="getAmountResponse">

<part name="parameters" element="tns:getAmountResponse"/>

</message>

<message name="getRate">

<part name="parameters" element="tns:getRate"/>

</message>

<message name="getRateResponse">

<part name="parameters" element="tns:getRateResponse"/>

</message>

<message name="getAmountMultiplyRate">

<part name="parameters" element="tns:getAmountMultiplyRate"/>

</message>

<message name="getAmountMultiplyRateResponse">

<part name="parameters" element="tns:getAmountMultiplyRateResponse"/>

</message>

<message name="setService">

<part name="parameters" element="tns:setService"/>

</message>

<message name="setServiceResponse">

<part name="parameters" element="tns:setServiceResponse"/>

</message>

<message name="setAmount">

<part name="parameters" element="tns:setAmount"/>

</message>

<message name="setAmountResponse">

<part name="parameters" element="tns:setAmountResponse"/>

</message>

<message name="setRate">

<part name="parameters" element="tns:setRate"/>

</message>

<message name="setRateResponse">

<part name="parameters" element="tns:setRateResponse"/>

</message>

<portType name="BankService">

<operation name="getService">

<input wsam:Action="http://soapwebservices.gay.github.com/BankService/getServiceRequest" message="tns:getService"/>

<output wsam:Action="http://soapwebservices.gay.github.com/BankService/getServiceResponse" message="tns:getServiceResponse"/>

</operation>

<operation name="getAmount">

<input wsam:Action="http://soapwebservices.gay.github.com/BankService/getAmountRequest" message="tns:getAmount"/>

<output wsam:Action="http://soapwebservices.gay.github.com/BankService/getAmountResponse" message="tns:getAmountResponse"/>

</operation>

<operation name="getRate">

<input wsam:Action="http://soapwebservices.gay.github.com/BankService/getRateRequest" message="tns:getRate"/>

<output wsam:Action="http://soapwebservices.gay.github.com/BankService/getRateResponse" message="tns:getRateResponse"/>

</operation>

<operation name="getAmountMultiplyRate">

<input wsam:Action="http://soapwebservices.gay.github.com/BankService/getAmountMultiplyRateRequest" message="tns:getAmountMultiplyRate"/>

<output wsam:Action="http://soapwebservices.gay.github.com/BankService/getAmountMultiplyRateResponse" message="tns:getAmountMultiplyRateResponse"/>

</operation>

<operation name="setService">

<input wsam:Action="http://soapwebservices.gay.github.com/BankService/setServiceRequest" message="tns:setService"/>

<output wsam:Action="http://soapwebservices.gay.github.com/BankService/setServiceResponse" message="tns:setServiceResponse"/>

</operation>

<operation name="setAmount">

<input wsam:Action="http://soapwebservices.gay.github.com/BankService/setAmountRequest" message="tns:setAmount"/>

<output wsam:Action="http://soapwebservices.gay.github.com/BankService/setAmountResponse" message="tns:setAmountResponse"/>

</operation>

<operation name="setRate">

<input wsam:Action="http://soapwebservices.gay.github.com/BankService/setRateRequest" message="tns:setRate"/>

<output wsam:Action="http://soapwebservices.gay.github.com/BankService/setRateResponse" message="tns:setRateResponse"/>

</operation>

</portType>

<binding name="BankServiceImplementationPortBinding" type="tns:BankService">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>

<operation name="getService">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

<operation name="getAmount">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

<operation name="getRate">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

<operation name="getAmountMultiplyRate">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

<operation name="setService">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

<operation name="setAmount">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

<operation name="setRate">

<soap:operation soapAction=""/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

</binding>

<service name="BankServiceImplementationService">

<port name="BankServiceImplementationPort" binding="tns:BankServiceImplementationPortBinding">

<soap:address location="http://localhost:8080/bankrequests"/>

</port>

</service>

</definitions>

    1. 2.9. bankrequests.xsd

<!--

Published by JAX-WS RI (https://github.com/eclipse-ee4j/metro-jax-ws). RI's version is JAX-WS RI 2.3.5 git-revision#7ddc91f.

-->

<xs:schema xmlns:tns="http://soapwebservices.gay.github.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://soapwebservices.gay.github.com/">

<xs:element name="getAmount" type="tns:getAmount"/>

<xs:element name="getAmountMultiplyRate" type="tns:getAmountMultiplyRate"/>

<xs:element name="getAmountMultiplyRateResponse" type="tns:getAmountMultiplyRateResponse"/>

<xs:element name="getAmountResponse" type="tns:getAmountResponse"/>

<xs:element name="getRate" type="tns:getRate"/>

<xs:element name="getRateResponse" type="tns:getRateResponse"/>

<xs:element name="getService" type="tns:getService"/>

<xs:element name="getServiceResponse" type="tns:getServiceResponse"/>

<xs:element name="setAmount" type="tns:setAmount"/>

<xs:element name="setAmountResponse" type="tns:setAmountResponse"/>

<xs:element name="setRate" type="tns:setRate"/>

<xs:element name="setRateResponse" type="tns:setRateResponse"/>

<xs:element name="setService" type="tns:setService"/>

<xs:element name="setServiceResponse" type="tns:setServiceResponse"/>

<xs:complexType name="getService">

<xs:sequence/>

</xs:complexType>

<xs:complexType name="getServiceResponse">

<xs:sequence>

<xs:element name="return" type="xs:string" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="getAmount">

<xs:sequence/>

</xs:complexType>

<xs:complexType name="getAmountResponse">

<xs:sequence>

<xs:element name="return" type="xs:int" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="setAmount">

<xs:sequence>

<xs:element name="arg0" type="xs:int" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="setAmountResponse">

<xs:sequence>

<xs:element name="return" type="xs:string" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="setRate">

<xs:sequence>

<xs:element name="arg0" type="xs:float" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="setRateResponse">

<xs:sequence>

<xs:element name="return" type="xs:string" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="getAmountMultiplyRate">

<xs:sequence/>

</xs:complexType>

<xs:complexType name="getAmountMultiplyRateResponse">

<xs:sequence>

<xs:element name="return" type="xs:float" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="getRate">

<xs:sequence/>

</xs:complexType>

<xs:complexType name="getRateResponse">

<xs:sequence>

<xs:element name="return" type="xs:float" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="setService">

<xs:sequence>

<xs:element name="arg0" type="xs:string" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="setServiceResponse">

<xs:sequence>

<xs:element name="return" type="xs:string" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

</xs:schema>

Соседние файлы в предмете Распределенные системы управления