Поиск по сайту:

Учебник по веб-сервисам Java


Добро пожаловать в учебник по веб-сервисам Java. Здесь мы узнаем о веб-сервисах, полезных концепциях веб-сервисов, а затем о различных типах API, которые у нас есть в Java для создания веб-сервисов.

Что такое веб-сервис

Проще говоря, службы, к которым можно получить доступ по сети, называются веб-службами. Так чем же это отличается от веб-приложения, они также являются службами, доступ к которым осуществляется через сеть. Есть несколько атрибутов, которые проясняют эту разницу.

  • Веб-приложения предназначены для пользователей и доступны в браузере, имеющем удобочитаемый формат, тогда как веб-службы предназначены для приложений, которые получают доступ к данным в формате XML, JSON и т. д.
  • Веб-приложения всегда используют протокол HTTP/HTTPS, тогда как традиционные веб-службы используют протокол SOAP. В последнее время набирает популярность REST, который представляет собой архитектурный стиль и почти всегда работает по протоколу HTTP/HTTPS.
  • Веб-приложения не предназначены для повторного использования, хотя это одно из преимуществ веб-служб. Одна и та же веб-служба может использоваться различными приложениями.
  • Веб-приложение может получить доступ к веб-службам для доступа к некоторым данным или для выполнения некоторых задач, веб-службы не могут получить доступ к веб-приложениям для получения некоторых данных.
  • Веб-приложения способны поддерживать сеанс пользователя, веб-службы не имеют состояния.

Я надеюсь, что приведенные выше различия достаточно хороши, чтобы устранить любую путаницу с веб-приложениями и веб-сервисами. Оба являются разными концепциями и предназначены для разных целей.

Типы веб-сервисов

Существует два типа веб-сервисов.

  1. SOAP: SOAP означает простой протокол доступа к объектам. SOAP — это стандартный отраслевой протокол на основе XML для проектирования и разработки веб-сервисов. Поскольку он основан на XML, он не зависит от платформы и языка. Таким образом, наш сервер может быть основан на JAVA, а клиент может быть на .NET, PHP и т. д., и наоборот.
  2. REST. REST — это архитектурный стиль разработки веб-служб. В последнее время он набирает популярность, потому что у него небольшая кривая обучения по сравнению с SOAP. Ресурсы — это основные понятия веб-служб Restful, и они однозначно идентифицируются своими URI.

Веб-службы Java

Java предоставляет собственный API для создания веб-сервисов как SOAP, так и REST.

  1. JAX-WS: JAX-WS означает Java API для веб-служб XML. JAX-WS — это Java API на основе XML для создания сервера веб-служб и клиентского приложения.
  2. 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());
	}
}

  1. Учебное пособие по JAX-WS
  2. Развертывание веб-служб JAX-WS на Tomcat
  3. Пример веб-службы SOAP с использованием Eclipse и Apache Axis
  4. Учебное пособие по веб-службам 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;
	}
}

  1. Веб-службы Restful
  2. Учебное пособие по RESTEasy
  3. Учебник по трикотажу

Это все для быстрого ознакомления с веб-сервисами Java, и, наконец, если вы готовитесь к какому-либо собеседованию, перейдите на страницу Oracle JAX-RS.