Добро пожаловать на учебник по Java Web Services. Здесь мы узнаем о веб-сервисах, полезных концепциях веб-сервисов, а также различных типах API, которые у нас есть в Java для создания веб-сервисов.
Что такое веб-сервис
Простыми словами, сервисы, к которым можно получить доступ через сеть, называются веб-сервисами. Так в чем же разница от веб-приложения? Они тоже представляют собой сервисы, к которым можно получить доступ через сеть. Есть несколько атрибутов, которые разъясняют эту разницу.
- Веб-приложения предназначены для пользователей и должны быть доступны в браузере в удобочитаемом формате, в то время как веб-сервисы предназначены для приложений для доступа к данным в формате XML, JSON и т.д.
- Веб-приложения всегда используют протокол HTTP/HTTPS, в то время как традиционные веб-сервисы используют протокол SOAP. В последнее время популярность набирает REST, который представляет собой стиль архитектуры и почти всегда работает на протоколе HTTP/HTTPS.
- Веб-приложения не предназначены для повторного использования, в то время как это одно из преимуществ веб-сервисов. Одним веб-сервисом можно пользоваться различными видами приложений.
- Веб-приложение может получать доступ к веб-сервисам для получения данных или выполнения задач, но веб-сервисы не могут получать доступ к веб-приложениям для извлечения данных.
- Веб-приложения способны поддерживать сеанс пользователя, веб-сервисы – безсостоятельны.
I hope above differences are good enough to clear any confusion with web applications and web services. Both are different concepts and meant for different purpose.
Типы веб-сервисов
Существует два типа веб-сервисов.
- SOAP: SOAP означает Simple Object Access Protocol. SOAP – это стандартный протокол, основанный на XML, для проектирования и разработки веб-сервисов. Поскольку он основан на XML, он независим от платформы и языка. Таким образом, наш сервер может быть основан на JAVA, а клиент – на .NET, PHP и т. д., и наоборот.
- REST: REST – это архитектурный стиль разработки веб-сервисов. Он набирает популярность в последнее время, потому что у него небольшой порог входа по сравнению с SOAP. Ресурсы являются основными концепциями RESTful веб-сервисов, и они уникально идентифицируются своими URI.
Веб-сервисы на Java
Java предоставляет собственное API для создания как SOAP, так и REST веб-сервисов.
- JAX-WS: JAX-WS означает Java API for XML Web Services. JAX-WS – это основанный на XML Java API для создания сервера веб-сервисов и клиентского приложения.
- JAX-RS: Java API for RESTful Web Services (JAX-RS) – это Java API для создания 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());
}
}
Вот и все. Просто запустите это приложение, и наш веб-сервис Hello World JAX-WS SOAP будет опубликован. На изображении ниже показано вызов этого веб-сервиса JAX-WS через SOAP UI. Это все для очень базового руководства по веб-сервису JAX-WS. Ниже приведены некоторые статьи, которые вы должны прочитать для лучшего понимания веб-сервисов SOAP и JAX-WS.
- Руководство по JAX-WS
- Развертывание веб-сервиса JAX-WS на Tomcat
- Пример веб-сервиса SOAP с использованием Eclipse и Apache Axis
- Руководство по веб-сервисам Apache Axis 2
Привет, мир! Приложение JAX-RS
Jersey – это эталонная реализация API JAX-RS, она не является частью стандартного 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>
Теперь добавьте сервлет Jersey в наш дескриптор развертывания 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;
}
}
Просто экспортируйте его как WAR-файл, а затем получите к нему доступ в браузере, как показано на изображении ниже. Вы можете изменить последнюю часть URL, и возвращаемое сообщение изменится соответственно. Вы можете увидеть, насколько легко было создать веб-сервис RESTful с использованием API JAX-RS. Однако есть еще многое, чему можно научиться, читайте далее в статьях ниже.
Вот вам краткое введение в веб-сервисы на Java. Наконец, если вы готовитесь к интервью, просмотрите вопросы по интервью о веб-сервисах. Ссылки: Страница JAX-WS Oracle, Страница JAX-RS Oracle
Source:
https://www.digitalocean.com/community/tutorials/java-web-services-tutorial