Вопрос: Мы с вами много на курсах работали с XML? — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Вопрос: Мы с вами много на курсах работали с XML?

2022-10-10 39
Вопрос: Мы с вами много на курсах работали с XML? 0.00 из 5.00 0 оценок
Заказать работу

Ответ: 2 курса по 40 часов. Много работали с XML? Ноль.

Вы думаете на Microsoftкурсах иначе? У них то же самое. Почему? Это отдельная тема.

Поэтому если придется этим заниматься (лично, индивидуально), тогда вы не просто будете заниматься XML, а вы выберете направление «сервисы» или еще что-то и вот им будете только заниматься.

Здесь этим XML-файлом занимаются занимаются соответствующие готовые части инфраструктуры. Вы не будете парсить клиентский файл. Это не наше дело. Вы не будете клиенту сами собирать XML ответ. Это не наше дело. Поэтому любой транспорт XMLза нас занимаются. Это нормально.

И нам было бы неплохо, если бы был какой-то инструментарий, который бы еще и помог всё это сгенерировать и создать. Поэтому мы сейчас посмотрим на сервис, но только не в этом варианте. Мы его посмотрим, как пример, а потом мы напишем клиента. И это и будет наша последняя лабораторная работа.

А сам сервис давайте я покажу. Этот пример является частью NetBeans. Сразу предупреждаю, что когда вы будете делать лабу, не надо создавать Web-приложение. Сделайте обычное консольное приложение. Ведь клиентом может быть все что угодно.

Использование веб-сервисов.

Итак, сейчас мы смотрим пример. Берем в примерах «Веб-службы» -> «Калькулятор». Нажимаем «Готово».

Мне генерируют сервис и даже к нему в подарок клиента.

Ну не нужен нам этот клиент. Нам нужен только CalculatorApp. Итак, я открываю Веб-страницы. И что я вижу?

Их нету! В веб-сервисе нет интерфейса. Он код. И его вызывает другой код программы. Тут нет интерфейса. Веб-страниц тут нет. Вы спросите, а зачем тогда нам веб-приложение? Его же надо на сервере развернуть, нужны настройки, ему нужен Web-XMLв конце концов. Поэтому он упаковывается Web-приложением. Пакеты исходных кодов. Вы думаете их здесь много? Ну добавили один файл. Открываем его.

Вот код всего сервиса. Значит они пишут калькулятор. Дальше предполагается, что вы добавите метод, который вычитает, умножает. И вот они написали метод, который складывает 2 числа. Вот скажите, если вот эти аннотации от сюда убрать, здесь есть хоть какое-нибудь свидетельство или тонкий намек, что это не обычный код на Java, кроме аннотаций? Импорты? А что в этих импортах? Так вот без аннотаций – это будет обычный код на Java. И получается, что есть я хочу какой-нибудь свой любимый функционал, который я там разработал или он у меня действительно очень полезен. Мне нужны эти данные или еще что-то. И я хочу это сделать достоянием всех – я беру обычный метод на Java. Не надо его переписывать. Я от него ничего не должен наследовать. Он просто метод.

http://localhost:8080/helloservice-war/HelloService?wsdl http://localhost:8080/helloservice-war/HelloService?Tester

 

Учтите, что ему столько аннотаций сколько здесь написано – не нужно. Ему нужна обязательно одна аннотация – у класса @WebService().Все остальное @WebMethod и @WebParam – это все дополнительно, чтобы вы могли в будущем изменить. Представьте, как порадуются ваши коллеги, если вы передаете метод и их клиентский код за предыдущие 10 лет рухнет? Вот я изменил здесь addна другое название и здесь никто не рухнет. Почему? Потому что я задал имя метода через аннотацию и в WSDL он всегда будет называться так, как написано в аннотации. Это вас и отделяет. Аннотакция позволяет отделить ваши внутренние имена, которые вы у себя хотите менять как угодно. Ради Бога! Можете менять. Внешний мир всегда будет видеть вот это имя. Но это же не обязательно. Если эту аннотацию убрать, то какое увидят люди имя? То, которое у метода. А если убрать в параметрах, какие они увидят имена? Вот эти.

Так что я беру свой любимый метод. Кладу его в класс. Ставлю пару аннотаций. И всё. Можно считать, что написанный функционал осталось только выложить на сервер. Вы скажете: «Эээээ! WSDLеще надо написать!». Не надо) Его генерирует веб-сервер. Магия! Именно так! И это нормально! Потому что это текст, который вы видели – есть стандарт, что там должно быть. Ну и чего? Его по стандарту и генерируют. А я предоставляю из своего кода информацию – какие параметры, сколько их и какой у них тип? Какое у них имя? Все это из кода можно взять. Никто этого не отменял. Всё. Выложили, запустили и радуйтесь.

Теперь закройте все здесь, что мы только что создали.

Вопрос: Ну хорошо! Сервис пишется достаточно просто – пару аннотаций, положил на сервер, поставил в рассылки URL, который все должны знать. А как клиента написать? И получается, что клиент тоже должен работать с XML? Ну да. Должен. Но не обязательно же лично. Вы же можете оснастить клиента, какими-то вспомогательными классами или утилитами, которые этот XML будут парсить? Да можете. Когда мы были на сайте Центробанка там было сразу после ссылочки ниже было написано следующее: «если вы пишете клиента в рукопашку, то скачайте такой-то инструментарий, чтобы работать с XML». Там написано, что именно. Эти инструменты, которые позволяют работать с XML, они являются частью среды. И поэтому нам достаточно попросить NetBeansпомочь нам работать с XML файлами. Она поможет. Что вы должны предоставить NetBeans, чтобы она сгенерировала весь код, который будет работать с веб-сервисом? Описание – WSDL-файл. Вот это будет выглядеть примерно так. Смотрите на слайд:

Вот появился код клиента. Не важно на каком языке. Вот здесь вот для клиента будет сгенерирован код, который NetBeansили VisualStudioсгенерирует. Этот код называется Proxy. Что это за зверь такой? Это будет класс. Создадите в программе объект этого класса и когда вы этот объект создадите и поставите у этого объекта «.», то вы в Intellisenseувидите именно те имена функций, которые здесь допустим 3 штуки были написаны кем-то на сервере и выставлены как веб-сервис. Например, здесь была функция add. И здесь будет функция add. Как вы думаете, сколько у нее будет параметров? Ну ровно столько сколько там справа на сервисе – два int. И когда вы напишите add(3,4), то вот этот класс, который выступает в роли Proxy, он ваш вызов правильно оформит в соответствии с… Вот этот Proxyгенерируется из WSDL, а уже он правильно оформит нужный вариант XMLиспользуя стандарт. Создаст для вас этот XML файл. URL мы знаем. Отправят туда. Вычисление произойдет естественно на сервере. Там вернут результат. Он его распарсит. И return’ом вам вернут что? Просто int.

А на самом деле там будет файл. Как обычно HTTP протокол, headers, body, из этого body(тэгов) вынут результат, вам все это принесут на тарелочке и скажут: «7». Поэтому на клиенте даже никаких аннотаций не будет. Единственная задача – это получить proxy.


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.