Учебник по веб-сервисам Java
Добро пожаловать в учебник по веб-сервисам Java. Здесь мы узнаем о веб-сервисах, полезных концепциях веб-сервисов, а затем о различных типах API, которые у нас есть в Java для создания веб-сервисов.
Что такое веб-сервис
Проще говоря, службы, к которым можно получить доступ по сети, называются веб-службами. Так чем же это отличается от веб-приложения, они также являются службами, доступ к которым осуществляется через сеть. Есть несколько атрибутов, которые проясняют эту разницу.
- Веб-приложения предназначены для пользователей и доступны в браузере, имеющем удобочитаемый формат, тогда как веб-службы предназначены для приложений, которые получают доступ к данным в формате XML, JSON и т. д.
- Веб-приложения всегда используют протокол HTTP/HTTPS, тогда как традиционные веб-службы используют протокол SOAP. В последнее время набирает популярность REST, который представляет собой архитектурный стиль и почти всегда работает по протоколу HTTP/HTTPS.
- Веб-приложения не предназначены для повторного использования, хотя это одно из преимуществ веб-служб. Одна и та же веб-служба может использоваться различными приложениями.
- Веб-приложение может получить доступ к веб-службам для доступа к некоторым данным или для выполнения некоторых задач, веб-службы не могут получить доступ к веб-приложениям для получения некоторых данных.
- Веб-приложения способны поддерживать сеанс пользователя, веб-службы не имеют состояния.
Я надеюсь, что приведенные выше различия достаточно хороши, чтобы устранить любую путаницу с веб-приложениями и веб-сервисами. Оба являются разными концепциями и предназначены для разных целей.
Типы веб-сервисов
Существует два типа веб-сервисов.
- SOAP: SOAP означает простой протокол доступа к объектам. SOAP — это стандартный отраслевой протокол на основе XML для проектирования и разработки веб-сервисов. Поскольку он основан на XML, он не зависит от платформы и языка. Таким образом, наш сервер может быть основан на JAVA, а клиент может быть на .NET, PHP и т. д., и наоборот.
- REST. REST — это архитектурный стиль разработки веб-служб. В последнее время он набирает популярность, потому что у него небольшая кривая обучения по сравнению с SOAP. Ресурсы — это основные понятия веб-служб Restful, и они однозначно идентифицируются своими URI.
Веб-службы Java
Java предоставляет собственный API для создания веб-сервисов как SOAP, так и REST.
- JAX-WS: JAX-WS означает Java API для веб-служб XML. JAX-WS — это Java API на основе XML для создания сервера веб-служб и клиентского приложения.
- JAX-RS: API Java для веб-служб RESTful (JAX-RS) — это API Java для создания веб-служб REST. JAX-RS использует аннотации для упрощения разработки и развертывания веб-сервисов.
Оба этих API являются частью стандартной установки JDK, поэтому нам не нужно добавлять какие-либо jar-файлы для работы с ними. Оба этих API очень активно используют аннотации.
Приложение Hello World JAX-WS
Давайте создадим очень простое приложение Hello World JAX-WS. TestService.java
package com.journaldev.jaxws.service;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;
@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class TestService {
@WebMethod
public String sayHello(String msg){
return "Hello "+msg;
}
public static void main(String[] args){
Endpoint.publish("https://localhost:8888/testWS", new TestService());
}
}
- Учебное пособие по JAX-WS
- Развертывание веб-служб JAX-WS на Tomcat
- Пример веб-службы SOAP с использованием Eclipse и Apache Axis
- Учебное пособие по веб-службам Apache Axis 2
Приложение Hello World JAX-RS
Jersey — эталонная реализация JAX-RS API, она не является частью стандартного JDK, и мы должны включить все необходимые jar-файлы. Лучше всего использовать сборку Maven, поэтому создайте простой динамический веб-проект, а затем преобразуйте его в Maven в Eclipse. Вот окончательный файл pom.xml с необходимыми зависимостями.
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JAX-RS-HelloWorld</groupId>
<artifactId>JAX-RS-HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Теперь добавьте сервлет из Джерси в наш дескриптор развертывания web.xml в качестве переднего контроллера.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns="https://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee https://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>JAX-RS-HelloWorld</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.journaldev.jaxrs.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Вышеуказанные два шага необходимы для первоначальной настройки, ниже приведен наш класс обслуживания Hello World JAX-RS.
package com.journaldev.jaxrs.service;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Path("/test")
public class TestService {
@GET
@Path("/hello/{msg}")
public String sayHello(@PathParam(value="msg") String msg){
return "Hello "+msg;
}
}
- Веб-службы Restful
- Учебное пособие по RESTEasy
- Учебник по трикотажу
Это все для быстрого ознакомления с веб-сервисами Java, и, наконец, если вы готовитесь к какому-либо собеседованию, перейдите на страницу Oracle JAX-RS.