자바 웹 서비스 튜토리얼


Java 웹 서비스 자습서에 오신 것을 환영합니다. 여기에서 우리는 웹 서비스, 웹 서비스의 유용한 개념 및 웹 서비스를 만들기 위해 Java에서 사용하는 다양한 유형의 API에 대해 배웁니다.

웹 서비스란?

쉽게 말해 네트워크를 통해 접속할 수 있는 서비스를 웹 서비스라고 합니다. 웹 애플리케이션과 어떻게 다른가요? 네트워크를 통해 액세스하는 서비스이기도 합니다. 이 차이점을 명확히 하는 몇 가지 특성이 있습니다.

  • 웹 애플리케이션은 사용자를 위한 것이며 사람이 읽을 수 있는 형식의 브라우저에서 액세스할 수 있는 반면 웹 서비스는 애플리케이션이 XML, JSON 등의 형식으로 데이터에 액세스하기 위한 것입니다.
  • 웹 애플리케이션은 항상 HTTP/HTTPS 프로토콜을 사용하지만 기존 웹 서비스는 SOAP 프로토콜을 사용합니다. 최근 REST는 아키텍처 스타일이며 거의 항상 HTTP/HTTPS 프로토콜에서 실행되는 인기를 얻고 있습니다.
  • 웹 애플리케이션은 재사용성을 위한 것이 아니지만 이는 웹 서비스의 이점 중 하나입니다. 다양한 종류의 애플리케이션에서 단일 웹 서비스를 사용할 수 있습니다.
  • 웹 애플리케이션은 일부 데이터에 액세스하거나 일부 작업을 수행하기 위해 웹 서비스에 액세스할 수 있지만 웹 서비스는 일부 데이터를 가져오기 위해 웹 애플리케이션에 액세스할 수 없습니다.
  • 웹 애플리케이션은 사용자 세션을 유지할 수 있으며 웹 서비스는 상태가 없습니다.

위의 차이점이 웹 응용 프로그램 및 웹 서비스와의 혼동을 없애기에 충분하기를 바랍니다. 둘 다 다른 개념이며 다른 목적을 의미합니다.

웹 서비스 유형

웹 서비스에는 두 가지 유형이 있습니다.

  1. SOAP: SOAP는 Simple Object Access Protocol의 약자입니다. SOAP는 웹 서비스 설계 및 개발을 위한 XML 기반 산업 표준 프로토콜입니다. XML 기반이기 때문에 플랫폼과 언어에 독립적입니다. 따라서 우리 서버는 JAVA를 기반으로 하고 클라이언트는 .NET, PHP 등을 기반으로 할 수 있으며 그 반대도 가능합니다.
  2. REST: REST는 웹 서비스 개발을 위한 아키텍처 스타일입니다. SOAP에 비해 학습 곡선이 작기 때문에 최근 인기를 얻고 있습니다. 리소스는 Restful 웹 서비스의 핵심 개념이며 URI로 고유하게 식별됩니다.

자바 웹 서비스

Java는 SOAP와 REST 웹 서비스를 모두 생성할 수 있는 자체 API를 제공합니다.

  1. JAX-WS: JAX-WS는 XML 웹 서비스용 Java API를 나타냅니다. JAX-WS는 웹 서비스 서버 및 클라이언트 애플리케이션을 구축하기 위한 XML 기반 Java API입니다.
  2. JAX-RS: RESTful 웹 서비스용 Java API(JAX-RS)는 REST 웹 서비스를 생성하기 위한 Java API입니다. 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. Tomcat에 JAX-WS 웹 서비스 배포
  3. Eclipse 및 Apache Axis를 사용한 SOAP 웹 서비스 예제
  4. Apache Axis 2 웹 서비스 자습서

Hello World JAX-RS 애플리케이션

Jersey는 JAX-RS API의 참조 구현이며 표준 JDK의 일부가 아니며 필요한 모든 jar를 포함해야 합니다. 가장 좋은 방법은 Maven 빌드를 사용하는 것이므로 간단한 Dynamic 웹 프로젝트를 만든 다음 Eclipse에서 Maven으로 변환합니다. 다음은 필수 종속성이 있는 최종 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;
	}
}

  1. 편안한 웹 서비스
  2. RESTEasy 자습서
  3. 저지 튜토리얼

자바 웹 서비스에 대한 간략한 소개는 여기까지입니다. 마지막으로 인터뷰를 준비하고 있다면 JAX-RS Oracle 페이지를 살펴보십시오.