[java] Java Apache CXF와 MongoDB 통합

Apache CXF는 Java 용 웹 서비스 프레임워크로, 다양한 웹 서비스 표준을 지원하고 SOAP 및 REST 기반의 웹 서비스를 쉽게 개발할 수 있도록 도와줍니다. MongoDB는 NoSQL 데이터베이스로, 비구조적인 데이터를 저장하고 처리하는 데 특화되어 있습니다.

이 글에서는 Java Apache CXF와 MongoDB를 연동하는 방법에 대해 알아보겠습니다.

1. Apache CXF 설정

먼저, Apache CXF를 사용하여 웹 서비스를 개발하는 프로젝트를 설정해야 합니다. Apache CXF는 Maven을 통해 간편하게 프로젝트를 생성할 수 있습니다. 아래의 Maven 종속성을 pom.xml 파일에 추가하여 Apache CXF를 프로젝트에 사용할 수 있도록 설정합니다.

<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.3.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-service-description</artifactId>
        <version>3.3.7</version>
    </dependency>
</dependencies>

2. MongoDB 설정

다음으로, MongoDB를 사용할 수 있도록 Java 프로젝트에 MongoDB 드라이버를 추가해야 합니다. 아래의 Maven 종속성을 pom.xml 파일에 추가하여 MongoDB Java 드라이버를 프로젝트에 설정합니다.

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.3.1</version>
</dependency>

3. MongoDB 연동

CXF 웹 서비스가 MongoDB를 사용할 수 있도록 연결해야 합니다. MongoDB와의 연동을 위해서는 MongoDB 클라이언트 인스턴스를 생성하고, 데이터베이스와 컬렉션을 선택해야 합니다. 아래의 코드는 CXF 웹 서비스에서 MongoDB와 연동하는 방법을 보여줍니다.

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.apache.cxf.jaxrs.ext.MessageContext;

public class MyWebService {

    private MessageContext context;
    private MongoClient mongoClient;
    private MongoDatabase database;
    private MongoCollection<Document> collection;

    public MyWebService(MessageContext context) {
        this.context = context;
        this.mongoClient = new MongoClient("localhost", 27017);
        this.database = mongoClient.getDatabase("myDB");
        this.collection = database.getCollection("myCollection");
    }

    public String getDataFromMongoDB() {
        // MongoDB에서 데이터 가져오는 로직 작성
        return "Data from MongoDB";
    }

}

위의 코드에서는 MongoDB의 host와 port를 설정하고, 원하는 데이터베이스 및 컬렉션을 선택합니다. 그리고 getDataFromMongoDB() 메서드를 통해 MongoDB에서 데이터를 가져올 수 있습니다.

4. CXF 웹 서비스 개발

CXF 웹 서비스에서 MongoDB와 연동하여 데이터를 조회하거나 저장할 수 있습니다. 아래의 코드는 CXF 웹 서비스에서 MongoDB와 연동하여 데이터를 가져오는 예시입니다.

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import org.apache.cxf.jaxrs.ext.MessageContext;

@Path("/myWebService")
public class MyWebServiceResource {

    @Context
    private MessageContext context;

    @GET
    @Path("/getData")
    public String getDataFromWebService() {
        MyWebService myWebService = new MyWebService(context);
        return myWebService.getDataFromMongoDB();
    }

}

위의 코드에서는 MyWebService 클래스를 호출하여 MongoDB에서 데이터를 가져오는 getDataFromWebService() 메서드를 구현하였습니다. CXF 웹 서비스는 /myWebService/getData 경로로 요청을 받으면 해당 메서드를 실행하고, MongoDB로부터 가져온 데이터를 응답으로 반환합니다.

마무리

이렇게 Java Apache CXF와 MongoDB를 통합하여 웹 서비스에서 MongoDB를 사용할 수 있습니다. Apache CXF를 사용하면 웹 서비스를 쉽게 개발할 수 있고, MongoDB와의 연동을 통해 비구조적인 데이터를 처리할 수 있습니다.

참고 문서: