[java] Java Jersey에서 XML 응답을 처리하는 방법은?

Java Jersey를 사용하여 RESTful 웹 서비스를 개발할 때, XML 형식의 응답을 처리하는 방법이 필요할 수 있습니다. Jersey는 기본적으로 JSON 형식을 지원하지만, XML 형식을 처리하기 위해서는 몇 가지 추가 작업이 필요합니다.

먼저, Maven 또는 Gradle을 사용하여 pom.xml 또는 build.gradle 파일에서 다음 종속성을 추가해야 합니다.

Maven:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-xml</artifactId>
    <version>2.31</version>
</dependency>

Gradle:

implementation 'org.glassfish.jersey.media:jersey-media-xml:2.31'

이제 Java 코드에서 XML 응답을 생성하기 위해 @Produces(MediaType.APPLICATION_XML) 어노테이션을 사용하여 메서드 또는 리소스 클래스에 적용해야 합니다. 이렇게하면 해당 메서드가 XML 형식의 응답을 생성한다는 것을 나타내게 됩니다.

예를 들어, 다음은 XML 형식의 응답을 생성하는 간단한 예제입니다.

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

@Path("example")
public class ExampleResource {

    @GET
    @Path("xml")
    @Produces(MediaType.APPLICATION_XML)
    public ExampleModel getXmlResponse() {
        ExampleModel model = new ExampleModel();
        model.setName("John Doe");
        model.setAge(30);
        return model;
    }
}

위의 예제에서 ExampleModel은 XML 요소로 변환될 자바 클래스입니다. @Produces(MediaType.APPLICATION_XML) 어노테이션을 통해 응답 형식이 XML임을 설정하였습니다.

XML을 생성하기 위해 ExampleModel 클래스는 JAXB (Java Architecture for XML Binding) 주석을 사용하여 XML 요소로 매핑되어야 합니다. 예를 들어, ExampleModel 클래스는 다음과 같을 수 있습니다.

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class ExampleModel {

    private String name;
    private int age;

    // Getters and setters
}

@XmlRootElement 어노테이션은 해당 클래스가 XML Root 엘리먼트임을 나타내며, JAXB로부터 필요한 XML 변환을 가능하게 합니다.

이제 위의 예제를 실행하고 /example/xml 경로로 GET 요청을 보내면 XML 형식의 응답을 받을 수 있습니다.

이와 같은 방법으로 Java Jersey에서 XML 응답을 처리할 수 있습니다.