[java] Java Apache CXF와 XML/JSON 데이터 처리

Apache CXF는 자바 기반의 오픈 소스 웹 서비스 프레임워크로, SOAP, REST 및 XML/JSON과 같은 다양한 프로토콜과 데이터 형식을 지원합니다. 이번 포스트에서는 Java에서 Apache CXF를 사용하여 XML 및 JSON 데이터를 처리하는 방법에 대해 알아보겠습니다.

1. Apache CXF 설정

Apache CXF를 사용하기 위해서는 먼저 Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 cxf-corecxf-rt-frontend-jaxrs와 같은 필요한 라이브러리를 프로젝트에 추가해야 합니다. 이는 해당 도구의 설정 파일에 의존성을 추가하여 수행할 수 있습니다.

Maven의 경우, pom.xml 파일에 아래의 의존성을 추가합니다:

<dependencies>
  <dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-core</artifactId>
    <version>3.4.4</version>
  </dependency>
  <dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxrs</artifactId>
    <version>3.4.4</version>
  </dependency>
</dependencies>

Gradle의 경우, build.gradle 파일에 아래의 의존성을 추가합니다:

dependencies {
  implementation 'org.apache.cxf:cxf-core:3.4.4'
  implementation 'org.apache.cxf:cxf-rt-frontend-jaxrs:3.4.4'
}

2. XML 데이터 처리

XML을 처리하기 위해서는 CXF에서 제공하는 JAX-RS 서비스를 활용할 수 있습니다. 먼저, XML 데이터를 처리할 Service 클래스를 작성해보겠습니다.

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/xml")
public class XmlService {

  @GET
  @Produces(MediaType.APPLICATION_XML)
  public DataObject getData() {
    // XML 데이터를 생성하거나 가져오는 로직
    DataObject dataObject = new DataObject();
    dataObject.setName("John Doe");
    dataObject.setAge(30);

    return dataObject;
  }

}

위의 코드에서는 /xml 경로에 대한 GET 요청을 처리하며, @Produces(MediaType.APPLICATION_XML) 어노테이션을 통해 XML 형식의 데이터를 반환합니다. DataObject는 XML로 직렬화될 수있는 POJO(Plain Old Java Object)입니다.

서비스를 시작하고 http://localhost:8080/xml에 요청을 보내면, XML로 직렬화된 데이터를 응답으로 받을 수 있습니다.

3. JSON 데이터 처리

JSON 데이터를 처리하기 위해서도 JAX-RS 서비스를 이용할 수 있습니다. 아래의 예시를 통해 JSON 데이터를 처리하는 Service 클래스를 작성해보겠습니다.

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/json")
public class JsonService {

  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public DataObject getData() {
    // JSON 데이터를 생성하거나 가져오는 로직
    DataObject dataObject = new DataObject();
    dataObject.setName("John Doe");
    dataObject.setAge(30);

    return dataObject;
  }

}

위의 코드에서도 /json 경로에 대한 GET 요청을 처리하며, @Produces(MediaType.APPLICATION_JSON) 어노테이션을 통해 JSON 형식의 데이터를 반환합니다.

서비스를 실행하고 http://localhost:8080/json에 요청을 보내면, JSON으로 직렬화된 데이터를 응답으로 받을 수 있습니다.

4. 결론

이번 포스트에서는 Java에서 Apache CXF를 사용하여 XML 및 JSON 데이터를 처리하는 방법에 대해 알아보았습니다. Apache CXF는 다양한 프로토콜과 데이터 형식을 지원하므로, 다양한 형태의 데이터를 처리하는 웹 서비스를 구축하는 데 유용한 도구입니다.

더 많은 정보를 원하시면 Apache CXF 공식 문서를 참조하세요.