자바 웹 서비스 튜토리얼
Java 웹 서비스 자습서에 오신 것을 환영합니다. 여기에서 우리는 웹 서비스, 웹 서비스의 유용한 개념 및 웹 서비스를 만들기 위해 Java에서 사용하는 다양한 유형의 API에 대해 배웁니다.
웹 서비스란?
쉽게 말해 네트워크를 통해 접속할 수 있는 서비스를 웹 서비스라고 합니다. 웹 애플리케이션과 어떻게 다른가요? 네트워크를 통해 액세스하는 서비스이기도 합니다. 이 차이점을 명확히 하는 몇 가지 특성이 있습니다.
- 웹 애플리케이션은 사용자를 위한 것이며 사람이 읽을 수 있는 형식의 브라우저에서 액세스할 수 있는 반면 웹 서비스는 애플리케이션이 XML, JSON 등의 형식으로 데이터에 액세스하기 위한 것입니다.
- 웹 애플리케이션은 항상 HTTP/HTTPS 프로토콜을 사용하지만 기존 웹 서비스는 SOAP 프로토콜을 사용합니다. 최근 REST는 아키텍처 스타일이며 거의 항상 HTTP/HTTPS 프로토콜에서 실행되는 인기를 얻고 있습니다.
- 웹 애플리케이션은 재사용성을 위한 것이 아니지만 이는 웹 서비스의 이점 중 하나입니다. 다양한 종류의 애플리케이션에서 단일 웹 서비스를 사용할 수 있습니다.
- 웹 애플리케이션은 일부 데이터에 액세스하거나 일부 작업을 수행하기 위해 웹 서비스에 액세스할 수 있지만 웹 서비스는 일부 데이터를 가져오기 위해 웹 애플리케이션에 액세스할 수 없습니다.
- 웹 애플리케이션은 사용자 세션을 유지할 수 있으며 웹 서비스는 상태가 없습니다.
위의 차이점이 웹 응용 프로그램 및 웹 서비스와의 혼동을 없애기에 충분하기를 바랍니다. 둘 다 다른 개념이며 다른 목적을 의미합니다.
웹 서비스 유형
웹 서비스에는 두 가지 유형이 있습니다.
- SOAP: SOAP는 Simple Object Access Protocol의 약자입니다. SOAP는 웹 서비스 설계 및 개발을 위한 XML 기반 산업 표준 프로토콜입니다. XML 기반이기 때문에 플랫폼과 언어에 독립적입니다. 따라서 우리 서버는 JAVA를 기반으로 하고 클라이언트는 .NET, PHP 등을 기반으로 할 수 있으며 그 반대도 가능합니다.
- REST: REST는 웹 서비스 개발을 위한 아키텍처 스타일입니다. SOAP에 비해 학습 곡선이 작기 때문에 최근 인기를 얻고 있습니다. 리소스는 Restful 웹 서비스의 핵심 개념이며 URI로 고유하게 식별됩니다.
자바 웹 서비스
Java는 SOAP와 REST 웹 서비스를 모두 생성할 수 있는 자체 API를 제공합니다.
- JAX-WS: JAX-WS는 XML 웹 서비스용 Java API를 나타냅니다. JAX-WS는 웹 서비스 서버 및 클라이언트 애플리케이션을 구축하기 위한 XML 기반 Java API입니다.
- 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());
}
}

- JAX-WS 자습서
- Tomcat에 JAX-WS 웹 서비스 배포
- Eclipse 및 Apache Axis를 사용한 SOAP 웹 서비스 예제
- 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;
}
}

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