Веб - сервіс це послуга , яка надає методи обслуговування для своїх клієнтів , використовуючи або парадигму програмування REST або протокол SOAP для зв'язку. Існує кілька способів реалізації веб-служби. Найпростіший спосіб , щоб написати веб - сервіс буде написати клас і анотувати його з @WebService
і @WebMethod
анотаціями з javax.jws
, а потім запустити його з main
-методу з:
Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
В результаті ви можете переглянути WSDL за зареєстрованою URL-адресою, і якщо у вас є SoapUI або будь-який інший клієнт SOAP, ви також можете протестувати та використовувати свою веб-службу.
З іншого боку, сервлет використовується для транспортування HTTP- запитів та відповідей. Його можна використовувати для написання веб-програми з JSP та HTML, або для подання відповідей XML та JSON (як у службі RESTful), і звичайно ж для отримання та повернення повідомлень SOAP. Ви можете сприймати це як один рівень нижче веб-сервісів . Сервлети мають свій власний стандарт, який наразі є специфікацією сервлетів Java версії 4.0
Більш комплексним і практичним підходом є створення веб-служби з фреймворком та публікація її на сервері додатків або контейнері сервлетів, таких як Tomcat або JBoss. У цьому випадку ви використовуєте сервлет для обробки транспортування HTTP-запитів, які передають ваші SOAP-повідомлення або REST-повідомлення.
Для написання веб-сервісу з використанням технології сервлетів ви можете, наприклад, використовувати JAX-WS (наприклад, для SOAP). Для того, щоб писати сервіси RESTful, ви можете або використовувати JAX-RS (з посиланням на реалізацію Джерсі ), або ж використовувати Spring WebMVC , але, наскільки мені відомо, це не головна мета цього фреймворку, і Джерсі значно простіший у використанні.
Щодо другого питання: @Controller
Анотація - Весна специфічна для стереотипна анотація, яка повідомляє Spring щось про те, що має робити ваш біб. Що саме поверне метод контролера, залежить від фактичної реалізації ваших методів, ви можете налаштувати Spring, щоб повертати звичайний текст, HTML, JSON, XML, двійкові дані або те, що ви хочете.
Примітка збоку, клас, до якого додано примітки, @Controller
ще не є сервлетом, це просто квасоля. Те, як ви використовуєте сервлети, в основному залежить від того, що ви використовуєте. Наприклад, коли ви використовуєте Spring, завдання сервлета виконується Springs, DispatcherServlet
яке, в свою чергу, пересилає запити до правильних компонентів. Якщо ви використовуєте Tomcat, ви можете безпосередньо писати власні сервлети, просто підкласуючи javax.servlet.http.HttpServlet
клас і перезаписуючи необхідні методи, такі як doGet
відповідь на запити HTTP GET з вашого браузера.