사물인터넷(IoT)은 우리가 일상적으로 사용하는 모든 장치와 사물을 인터넷에 연결하여 상호작용하도록 만드는 기술입니다. 사물인터넷은 다양한 분야에서 활용되고 있는데, 예를 들면 스마트 홈, 스마트 시티, 산업 자동화 등이 있습니다.
JAX-RS는 자바에서 웹 서비스를 개발하기 위한 API로, 사물인터넷과 같은 분야에서 RESTful 웹 서비스를 구축하는데 많이 사용됩니다. JAX-RS는 자바 명세이며 여러 가지 구현체가 존재합니다. 대표적으로는 Jersey, Apache CXF, RESTEasy 등이 있습니다.
여기서는 JAX-RS를 사용하여 사물인터넷과 연동하는 예제를 살펴보겠습니다.
필요한 의존성 추가하기
JAX-RS를 사용하기 위해 프로젝트에 필요한 의존성을 추가해야 합니다. Maven을 사용하는 경우 pom.xml
파일에 다음과 같이 의존성을 추가합니다.
<dependencies>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version>
</dependency>
<!-- JAX-RS 구현체 추가 -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.34</version>
</dependency>
</dependencies>
JAX-RS 리소스 클래스 작성하기
JAX-RS에서는 @Path
어노테이션을 사용하여 리소스를 식별합니다. 다음은 간단한 예제 코드입니다.
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/sensors")
public class SensorResource {
@GET
@Path("/temperature")
@Produces("application/json")
public Response getTemperature() {
// 센서에서 온도 데이터를 가져와서 JSON 형식으로 반환하는 로직
double temperature = SensorService.getTemperature();
String json = "{\"temperature\": " + temperature + "}";
return Response.ok(json).build();
}
}
위의 코드에서 @Path
어노테이션은 해당 리소스를 어떤 경로에 매핑할지 정의합니다. @GET
어노테이션은 해당 메서드가 HTTP GET 요청을 처리한다는 것을 나타냅니다. @Produces
어노테이션은 응답으로 보낼 데이터의 형식을 지정합니다. 이 예제에서는 JSON 형식으로 응답을 보내기 위해 "application/json"
으로 설정했습니다.
JAX-RS 애플리케이션 설정하기
JAX-RS 애플리케이션을 구동하기 위해 설정 파일을 작성해야 합니다. 다음은 web.xml
파일을 사용하는 경우의 예제입니다.
<web-app>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
위의 설정에서 init-param
의 jersey.config.server.provider.packages
파라미터에는 JAX-RS 리소스 클래스가 위치한 패키지를 지정해야 합니다. url-pattern
은 애플리케이션의 루트 경로를 정의합니다.
테스트하기
설정이 완료되면 JAX-RS 애플리케이션이 실행되어야 합니다. 이를 위해 애플리케이션을 빌드한 후 서버에서 실행하거나, IDE에서 내장된 서버를 사용하여 애플리케이션을 실행할 수 있습니다.
서버가 실행되면 http://localhost:8080/api/sensors/temperature
에 GET 요청을 보내어 온도 데이터를 가져올 수 있습니다.
위의 예제는 JAX-RS를 사용하여 사물인터넷과 연동하는 간단한 예제를 보여줍니다. JAX-RS는 웹 서비스 개발에 많이 사용되는 표준 API이며, 사물인터넷과 같은 분야에서도 유용하게 활용될 수 있습니다.