Добавил:
Кафедра ВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Краденные лабы / 8308_Треско_Сергеев_ЛР№5

.pdf
Скачиваний:
9
Добавлен:
08.04.2023
Размер:
195.17 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра ВТ

ОТЧЕТ по лабораторной работе №5

по дисциплине «Распределенные системы» Тема: Веб-службы

Студенты гр. 8308

 

Треско М.Ю.

 

 

Сергеев В.С.

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

 

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

Санкт-Петербург

2022

Цель работы

Познакомиться с веб-службами Java.

Основные теоретические положения:

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

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

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

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

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

Рисунок 1 – Модель работы веб-службы

2

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

·заказчик;

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

·каталог.

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

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

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

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

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

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

3

Задание на лабораторную работу

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

Разработать сервлет-клиент для данной службы.

Код программы

Таблица 1 - Исходный код службы

Request.java

package com.example.RS5Service;

public record Request(Integer amount, Double rate) {}

Response.java

package com.example.RS5Service;

public record Response(Double answer) { }

Rs5ServiceApplication.java

package com.example.RS5Service;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Rs5ServiceApplication { public static void main(String[] args) {

SpringApplication.run(Rs5ServiceApplication.class, args);

}

4

}

ServiceController.java

package com.example.RS5Service;

import org.springframework.http.ResponseEntity;

import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController;

@RestController

public class ServiceController { @PostMapping("/mul")

public ResponseEntity<?> convertValue(@RequestBody Request request) { return ResponseEntity.ok(new Response(request.amount() * request.rate()));

}

}

Таблица 2 - Исходный код клиента

Request.java

package com.example.RS5Client;

import lombok.Data;

import lombok.NoArgsConstructor;

@Data

@NoArgsConstructor public class Request {

private Integer amount;

5

private Double rate;

}

Response.java

package com.example.RS5Client;

public record Response(Double answer) { }

Rs5ClientApplication.java

package com.example.RS5Client;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Rs5ClientApplication {

public static void main(String[] args) { SpringApplication.run(Rs5ClientApplication.class, args);

}

}

ClientController.java

package com.example.RS5Client;

import org.springframework.stereotype.Controller; import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.GetMapping;

6

import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.client.RestTemplate;

@Controller

public class ClientController {

private final String basePath = "http://localhost:8080/mul"; private RestTemplate restTemplate = new RestTemplate(); private Request request = new Request();

@GetMapping("/form")

public String showForm(Model model) { model.addAttribute("request", request); return "MainPage";

}

@PostMapping("/form")

public String confirmForm(@ModelAttribute Request Request, Model model) { this.request = Request;

Response response = restTemplate.postForObject(basePath, Request, Response.class);

assert response != null; model.addAttribute("answer", response.answer()); return "MainPage";

}

7

}

8

Пример работы

Рисунок 2 – Пример работы программы

Вывод

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

9