Лабораторная работа №4. Создание web-сервисов




Цель работы. Познакомиться с технологией web-сервисов.

Краткое теоретическое содержание. Создадим web-сервис для скачивания файлов (file-upload). Прежде всего, создаем web-проект (имя WebSErviceLab), структура которого показана на рисунке 1

 

 

Рисунок 1. Структура проекта

Данный проект пуст. В небо следует добавить web-службу. Для этого активизируем контекстное меню на имени проекта и выбираем п. Создать – Другое – Веб-Службы

 

Выбираем тип файла Веб-служба и жмем Далее. Вводим имя службы и имя пакета. Жмем Готово. Система создает следующую заготовку сервиса:

package com;

 

import javax.jws.WebService;

import javax.jws.WebMethod;

import javax.jws.WebParam;

 

 

@WebService(serviceName = "FileUpload")

public class FileUpload {

 

 

@WebMethod(operationName = "hello")

public String hello(@WebParam(name = "name") String txt) {

return "Hello " + txt + "!";

}

}

 

Для начала добавим в службу свой собственный метод. Щелкаем правой кнопкой мыши в окне кода и выбираем п. Вставка кода из контекстного меню (рисунок 2).

 

 

Рисунок 2. Добавление метода в web-службу

 

Выбираем п. Добавление операции веб-службы (рисунок 3).

 

 

Рисунок 3. Определение имени и параметров метода

 

Задаем имя метода getFile и тип возвращаемого значения – массив байтов. В результате код в окне редактора принял такой вид

 

package com;

 

import javax.jws.WebService;

import javax.jws.WebMethod;

import javax.jws.WebParam;

 

 

@WebService(serviceName = "FileUpload")

public class FileUpload {

 

@WebMethod(operationName = "hello")

public String hello(@WebParam(name = "name") String txt) {

return "Hello " + txt + "!";

}

 

@WebMethod(operationName = "getFile")

public byte [] getFile() {

//TODO write your implementation code here:

return null;

}

}

 

Наша задача – реализовать метод getFile. Код нашего метода примет такой вид

 

package com;

import javax.jws.WebService;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import java.io.*;

import java.nio.file.Files;

import java.nio.file.Paths;

import java.nio.file.Path;

 

 

@WebService(serviceName = "FileUpload")

public class FileUpload {

 

@WebMethod(operationName = "hello")

public String hello(@WebParam(name = "name") String txt) {

return "Hello " + txt + "!";

}

 

@WebMethod(operationName = "getFile")

public byte [] getFile() {

byte [] buf=null;

java.awt.FileDialog fd=null;

java.awt.Dialog di=null;

 

try

{

String s1="e:/work5/hib1.txt";

Path path = Paths.get(s1);

buf = Files.readAllBytes(path);

}

 

catch(Exception ex)

{

}

return buf;

}}

 

Выполним сервис и разместим его (deploy) используя опции меню. Сначала из контекстного меню выберем Очистить и построить, затем – Развернуть.

Серверная часть готова.

Создаем клиента как обычное Java приложение (Java Application с именем WebServiceClient).

 

Структура проекта (с серверной и клиентской частями) показана на рисунке 4:

 

 

Рисунок 4. Структура проекта

 

Программируем клиентскую часть таким образом

 

package webserviceclient;

import com.FileUpload;

import com.FileUpload_Service;

 

public class WebServiceClient {

 

public static void main(String[] args) {

FileUpload_Service service =

new FileUpload_Service();

System.out.println(service.getFileUploadPort().hello

("OLEG GERMAN"));

try

{

byte [] fromserv

= service.getFileUploadPort().getFile();

if((fromserv==null)||(fromserv.length<=0))

{

System.out.println("File was not sent");

}

else

{

String str = new String(fromserv);

System.out.println(str);

 

}

 

}

catch(Exception ex)

{

System.out.println

("Cannot get file from service:"+ex.getMessage());

}

}

}

 

 

Файл считывается в следующем фрагменте

 

byte [] fromserv

= service.getFileUploadPort().getFile();

 

 

Задание

Приведенное приложение следует усложнить. Клиенту web-сервис передает список всех текстовых файлов (для простоты – txt), находящихся в электронной библиотеке. Этот список раскрывается в окне клиента. Клиент должен произвести выбор книги, а затем повторно обратиться к сервису за самой книгой. Ясно, что приложение клиента следует выполнить как оконное.

 

Контрольные вопросы.

 

1. Что такое управляемый web-сервис, как он связывается с клиентом?

2. Расскажите, как создать web-сервис.

3. Расскажите, как создать службу клиента.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: