Apache CXF는 Java로 웹 서비스를 개발하기 위한 오픈 소스 프레임워크로서, WSDL-first 방식을 지원합니다. WSDL-first 개발은 먼저 웹 서비스의 정의를 하는 WSDL 파일을 작성하고, 이를 기반으로 서비스를 개발하는 방식을 말합니다.
이번 글에서는 Apache CXF를 사용하여 WSDL-first 방식으로 웹 서비스를 개발하는 과정에 대해 살펴보겠습니다.
1. Apache CXF 설치
먼저 Apache CXF를 설치해야 합니다. Apache CXF는 Maven을 통해 간단히 설치할 수 있습니다. 다음은 Maven을 사용하여 Apache CXF를 추가하는 예제입니다.
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.4.2</version>
</dependency>
</dependencies>
2. WSDL 작성
다음으로, 웹 서비스의 정의를 하는 WSDL 파일을 작성해야 합니다. WSDL은 XML 기반의 문서로, 서비스의 인터페이스와 메시지 포맷을 정의합니다. 아래는 간단한 WSDL 예제입니다.
<definitions name="HelloService"
targetNamespace="http://example.com"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://example.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<message name="helloRequest">
<part name="name" type="xsd:string"/>
</message>
<message name="helloResponse">
<part name="greeting" type="xsd:string"/>
</message>
<portType name="HelloPortType">
<operation name="sayHello">
<input message="tns:helloRequest"/>
<output message="tns:helloResponse"/>
</operation>
</portType>
<binding name="HelloBinding" type="tns:HelloPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sayHello">
<soap:operation soapAction="urn:sayHello"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="HelloService">
<port name="HelloPort" binding="tns:HelloBinding">
<soap:address location="http://localhost:8080/helloService"/>
</port>
</service>
</definitions>
3. WSDL을 기반으로 웹 서비스 개발
WSDL을 작성했다면, Apache CXF를 사용하여 해당 WSDL을 기반으로 Java 인터페이스 및 서비스를 생성할 수 있습니다. 다음은 Maven을 사용한 예제입니다.
<build>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.4.2</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/HelloService.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
위의 설정을 추가한 후 Maven을 실행하면, WSDL을 기반으로 Java 소스코드가 생성됩니다.
4. 웹 서비스 구현
마지막으로, WSDL을 기반으로 생성된 Java 소스코드를 사용하여 실제로 웹 서비스를 구현할 수 있습니다. Apache CXF의 JAX-WS를 사용하여 간단한 웹 서비스를 구현하는 예제는 아래와 같습니다.
@WebService
public class HelloService {
@WebMethod
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
요약
이렇게 Apache CXF를 사용하여 WSDL-first 방식으로 웹 서비스를 개발할 수 있습니다. WSDL-first 방식은 서비스의 명세를 명확히 정의할 수 있으며, Apache CXF를 통해 손쉽게 해당 WSDL을 기반으로 웹 서비스를 구현할 수 있습니다.
참고문헌:
- Apache CXF 공식 문서: https://cxf.apache.org/docs/wsdl-to-java.html
- WSDL 소개: https://www.w3.org/TR/wsdl.html