Собеседование по Java EE — Web services (вопросы и ответы)

Список вопросов и ответов по теме «Веб-сервисы» в Java (Java web services).

к списку вопросов раздела JEE

Вопросы

1. Что такое веб сервисы?
2. В чем разница между SOA и web service?
3. Что такое SOAP?
4. Что такое REST?
5. В чем разница между REST и SOAP веб сервисами?
6. Как бы вы решили какой из REST или SOAP веб сервисов использовать?
7. Объясните понятие WSDL.
8. Что такое JAX-WS?
9. Расскажите о JAXB.
10. Можем ли мы посылать soap сообщения с вложением?
11. Что такое MTOM?
12. Что такое XOP?
13. Объясните элемент SOAP envelope.
14. Как определяется пространство имен SOAP?
15. Что вы знаете о кодировании в SOAP (encoding)?
16. Что определяет атрибут encodingStyle в SOAP?
17. Какие два конечных типа веб сервисов используют JAX-WS?
18. Какие существуют правила для кодирования записи header?
19. Что вы знаете об инструменте wsimport?
20. Что вы знаете об инструменте wsgen?
21. Какие вы можете выделить различия между SOAP и другими техниками удаленного доступа?
22. Что такое resource в REST?
23. Какие HTTP методы поддерживаются в REST?
24. Когда можно использовать GET запрос вместо POST для создания ресурса?
25. Какая разница между GET и POST запросами?
26. Что означает WADL?
27. Какие вы знаете фреймворки, которые реализуют REST веб сервисы?
28. Какая разница между AJAX и REST?
29. Что делает аннотация @Path?
30. Что делает аннотация @PathParam?
31. Что делает аннотация @QueryParam?
32. Что делает аннотация @MatrixParam?
33. Что делает аннотация @FormParam?
34. Какие два способа получения заголовка HTTP запроса в JAX-RS вы знаете?
35. Как скачать файл с помощью JAX-RS?

Ответы

1. Что такое веб сервисы?

Веб-служба, веб-сервис (англ. web service) — идентифицируемая веб-адресом программная система со стандартизированными интерфейсами. Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах (SOAP, XML-RPC, REST и т. д.). Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения. К характеристикам веб сервисов относят:

  • Функциональная совместимость
  • Расширяемость
  • Возможность машинной обработки описания

2. В чем разница между SOA и web service?

Сервис-ориентированная архитектура (SOA, service-oriented architecture) — модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам. Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST). Веб сервисы реализующие эту концепцию используют XML, JSON и др., а так же интернет протоколы вроде HTTP(S), SMTP и др..

3. Что такое SOAP?

SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам; вплоть до спецификации 1.2) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.

SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.

4. Что такое REST?

REST (сокр. от англ. Representational State Transfer — «передача состояния представления») — архитектурный стиль взаимодействия компонентов распределённого приложения в сети. REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиа-системы. В определённых случаях (интернет-магазины, поисковые системы, прочие системы, основанные на данных) это приводит к повышению производительности и упрощению архитектуры. В широком смысле компоненты в REST взаимодействуют наподобие взаимодействия клиентов и серверов во Всемирной паутине. REST является альтернативой RPC.

В сети Интернет вызов удалённой процедуры может представлять собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса. Для веб-сервисов, построенных с учётом REST, то есть не нарушающих накладываемых им ограничений, применяют термин «RESTful».

5. В чем разница между REST и SOAP веб сервисами?

  • REST поддерживает различные форматы: text, JSON, XML; SOAP — только XML,
  • REST работает только по HTTP(S), а SOAP может работать с различными протоколами,
  • REST может работать с ресурсами. Каждый URL это представление какого-либо ресурса. SOAP работает с операциями, которые реализуют какую-либо бизнес логику с помощью нескольких интерфейсов,
  • SOAP на основе чтения не может быть помещена в кэш, а REST в этом случае может быть закэширован,
  • SOAP поддерживает SSL и WS-security, в то время как REST — только SSL,
  • SOAP поддерживает ACID (Atomicity, Consistency, Isolation, Durability). REST поддерживает транзакции, но ни один из ACID не совместим с двух фазовым коммитом.
REST vs SOAP. Часть 1. Почувствуйте разницу: https://habrahabr.ru/post/131343/

6. Как бы вы решили какой из REST или SOAP веб сервисов использовать?

REST против SOAP можно перефразировать как «Простота против Стандарта». В случае REST (простота) у вас будет скорость, расширяемость и поддержка многих форматов. В случае с SOAP у вас будет больше возможностей по безопасности (WS-security) и транзакционная безопасность (ACID).

7. Объясните понятие WSDL.

WSDL (англ. Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML.

Каждый документ WSDL 1.1 можно разбить на следующие логические части:

  • определение типов данных (types) — определение вида отправляемых и получаемых сервисом XML-сообщений
  • элементы данных (message) — сообщения, используемые web-сервисом
  • абстрактные операции (portType) — список операций, которые могут быть выполнены с сообщениями
  • связывание сервисов (binding) — способ, которым сообщение будет доставлено

8. Что такое JAX-WS?

Java API for XML Web Services (JAX-WS) — это прикладной программный интерфейс языка Java для создания веб-служб, являющийся частью платформы Java EE. JAX-WS является заменой технологии JAX-RPC, предоставляя более документо-ориентированную модель сообщений и упрощая разработку[1] веб-служб за счёт использования аннотаций, впервые появившихся в Java SE 5. Технология JAX-WS является стандартом и описана в JSR 224. Некоторые преимущества:

  • Использование аннотаций устраняет необходимость создания дескрипторов веб-служб.
  • Декларация конечных точек (endpoints) происходит непосредственно в классах Java.
  • Прямая интеграция с JAXB 2.0.
  • Внедрение ресурсов (Resource injection).
  • Поддержка MTOM.
  • Возможность выбора между двумя путями разработки: снизу-вверх (программист разрабатывает endpoint-классы сам) и сверху-вниз (Java классы генерируются по WSDL).

9. Расскажите о JAXB.

Java Architecture for XML Binding (JAXB) позволяет Java разработчикам ставить в соответствие Java классы и XML представления. JAXB предоставляет две основные возможности: сериализация Java объектов в XML и наоборот, то есть десериализация из XML обратно в Java объект. Другими словами, JAXB позволяет хранить и извлекать данные в памяти в любом XML-формате, без необходимости выполнения определенного набора процедур загрузки и сохранения XML. Он похож на xsd.exe и XmlSerializer в .NET Framework.

JAXB особенно полезен, когда спецификация является сложной и меняющейся. В этом случае, постоянные изменения схемы XML определений для синхронизации их с определениями Java могут занять много времени и быть подвержены ошибкам.

10. Можем ли мы посылать soap сообщения с вложением?

Да, это возможно. Можно посылать вложением различные форматы: PDF, изображения или другие двоичные данные. Сообщения SOAP работают вместе с расширением MIME, в котором предусмотрено multipart/related:

11. Что такое MTOM?

MTOM (Message Transmission Optimization Mechanism) — использование кодирования сообщений с помощью механизма оптимизации передачи сообщений. Это механизм передачи больших вложений в двоичном формате с сообщениями протокола SOAP как необработанных байтов, допустимых для меньших сообщений.

12. Что такое XOP?

XOP (XML-binary Optimized Packaging) — механизм, рекомендованный W3C для встраивания двоичных данных в набор информационных элементов XML (XML Information Set).

13. Объясните элемент SOAP envelope.

Элемент SOAP envelope является корневым элементом SOAP сообщения и определяет XML документ как SOAP сообщение.

14. Как определяется пространство имен SOAP?

15. Что вы знаете о кодировании в SOAP (encoding)?

Кодирование SOAP представляет собой метод для структурирования запроса, который предлагается в рамках спецификации SOAP, известный как SOAP-сериализация.

16. Что определяет атрибут encodingStyle в SOAP?

SOAP encodingStyle определяет правила сериализации, используемые в сообщении SOAP. Этот атрибут может появиться на любом элементе, и область видимости этого атрибута будет распространяться на все дочерние элементы, даже на те, которые не имеют явно этого атрибута. Для сообщений SOAP по умолчанию кодирование не определено.

17. Какие два конечных типа веб сервисов используют JAX-WS?

  • RPC (remote procedure call) style web service в JAX-WS; 
  • document style web service в JAX-WS. 

18. Какие существуют правила для кодирования записи header?

  • заголовок должен быть идентифицирован с помощью полного имени, которое содержит пространство имен URI и локальное имя. Все непосредственные дочерние элементы SOAP заголовка должны быть заданы в пространстве имен,
  • атрибут SOAP encodingStyle должен использоваться для указания стиля кодирования заголовка,
  • атрибут SOAP mustUnderstand и атрибут SOAP actor должны использоваться для указания того, как обрабатывать запись и кем.

19. Что вы знаете об инструменте wsimport?

Инструмент wsimport используется для синтаксического анализа существующих Web Services Description Language (WSDL-файл) и генерации необходимых файлов (JAX-WS портируемые артефакты) для клиента веб-сервиса для доступа к опубликованному веб-сервису.

20. Что вы знаете об инструменте wsgen?

Инструмент wsgen используется для анализа существующего класса реализации веб-службы и создает необходимые файлы (JAX-WS портируемые артефакты) для развертывания веб-служб.

21. Какие вы можете выделить различия между SOAP и другими техниками удаленного доступа?

  • SOAP проще в использовании, т.к. он не симметричный вроде DCOM или COBRA,
  • SOAP является более независимым от платформы и языка в отличие от DCOM или CORBA,
  • SOAP использует HTTP в качестве транспортного протокола и данные сохраняются в формате XML, который может быть прочтен человеком, тогда как DCOM или CORBA имеют свои собственные бинарные форматы, которые используются для транспортировки данных сложным образом.
  • SOAP идентифицирует объект, отличный от конечного URL. Объекты SOAP являются независимыми и их сложно поддерживать. В случае других методов удаленного доступа работа в этом случае может быть проще.

22. Что такое resource в REST?

Это уникальный URL с представлением объекта, который может быть получен с помощью запросов GET и изменен с помощью PUT, POST, DELETE.

23. Какие HTTP методы поддерживаются в REST?

  • GET;
  • POST;
  • PUT;
  • DELETE;
  • OPTIONS;
  • HEAD.

24. Когда можно использовать GET запрос вместо POST для создания ресурса?

Невозможно использовать GET запрос для изменения (создания) ресурса.

25. Какая разница между GET и POST запросами?

GET передает данные серверу используя URL, когда POST передает данные, используя тело HTTP запроса.

Длина URL’а ограничена 1024 символами, это и будет верхним ограничением для данных, которые можно отослать GET’ом.

POST может отправлять гораздо большие объемы данных. Лимит устанавливается веб-сервером и обычно равен около 2MB.

Передача данных методом POST более безопасна, чем методом GET, так как секретные данные (например пароль) не отображаются напрямую в web-клиенте пользователя (в отличии от URL, который виден почти всегда).

26. Что означает WADL?

Web Application Description Language (WADL) — машинно-читаемое XML-описание для web-приложений HTTP (как правило, веб-сервисы REST). Аналог WSDL для SOAP.

WADL моделирует ресурсы, предоставляемые сервисом, и взаимосвязи между ними. WADL был предложен как стандарт W3C компанией Sun Microsystems в августе 2009, но консорциум не имеет никаких планов насчёт него и WADL ещё не получил широкого применения.

27. Какие вы знаете фреймворки, которые реализуют REST веб сервисы?

Их много, вот некоторые из них: Jersey, Restlet, EasyRest.

28. Какая разница между AJAX и REST?

  • В AJAX запрос посылается к серверу с помощью объектов XMLHttpRequest. В REST используется структура URL и использование ресурсов вращается вокруг шаблона запрос\ответ.
  • AJAX асинхронно исключает взаимодействие между клиентом и сервером, в то время как REST требует взаимодействия между клиентом и сервером.
  • AJAX технология «set«. REST — предоставляет методы для пользователей для запроса данных или информации от сервера.

29. Что делает аннотация @Path?

Аннотация @Path связывает URI шаблон с Java методом.

При вызове URI: ‘/persons‘ будет вызван метод getPerson;

При вызове URI: ‘/persons/vip‘ будет вызван метод getPersonVIP;

30. Что делает аннотация @PathParam?

@PathParam внедряет значения параметра URI, который задан в выражении.

При вызове URI ‘/persons/1‘ получим вызов getPersonById и id = 1;

31. Что делает аннотация @QueryParam?

@QueryParam внедряет параметр запроса URI в Java метод.

При вызове URI: “/persons/query?from=10&to=20&orderBy=age&orderBy=name” получим вызов метода getPersons и from = 10, to = 20, orderBy[age, name]

32. Что делает аннотация @MatrixParam?

@MatrixParam устанавливает соответствие “name=value” в пути URI.

При вызове URI: “/books/2015” будет вызван метод: getBooks, year : 2015, author : null, country : null.
При вызове URI: “/books/2015;author= doyle;country=scotland” будет вызван метод: getBooks, year : 2015, author : doyle, country : scotland.

33. Что делает аннотация @FormParam?

@FormParam связывает HTML параметры в Java методе.

HTML форма:

34. Какие два способа получения заголовка HTTP запроса в JAX-RS вы знаете?

  1. Внедрить в метод с помощью @HeaderParam

Вызвав URI: “/persons/get”, будет вызван метод getPerson с параметром personAgent : Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0

2) Программно с помощью аннотации @Context

Вызываем URI: “/persons/get”, результат: вызов метода getPerson и personAgent : Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0

35. Как скачать файл с помощью JAX-RS?

  • Задать аннотацию @Produces(‘?’) над сервисным методом с указанием возвращаемого в ответе типа. Вместо ‘?’ используйте text/plain, image/png и т.д.
  • Установить Conent-Description в заголовке ответа для оповещения браузера показать всплывающее окно для загрузки.

 

к списку вопросов раздела JEE
Share Button
28
4463 Total Views 4 Views Today

Добавить комментарий