27.3. 서비스 공급자 구현

27.3.1. 구현 코드 생성

코드 생성기 -impl 플래그를 사용하여 서비스 공급자를 빌드하는 데 사용되는 구현 클래스를 생성합니다.

참고

서비스의 계약에 XML 스키마에 정의된 사용자 지정 형식이 포함된 경우 해당 유형의 클래스가 생성되어 사용 가능한지 확인해야 합니다.

코드 생성기 사용에 대한 자세한 내용은 44.2절. “cxf-codegen-plugin” 을 참조하십시오.

27.3.2. 생성된 코드

구현 코드는 두 개의 파일로 구성됩니다.

  • portTypeName.java - 서비스의 서비스 인터페이스(SEI)입니다.
  • portTypeNameImpl.java - 서비스에서 정의한 작업을 구현하는 데 사용할 클래스입니다.

27.3.3. 작업의 논리 구현

서비스 작업에 대한 비즈니스 논리를 제공하려면 portTypeNameImpl.java 의 스텁 메서드를 완료합니다. 일반적으로 표준 Java를 사용하여 비즈니스 논리를 구현합니다. 서비스에서 사용자 지정 XML 스키마 유형을 사용하는 경우 각 형식에 대해 생성된 클래스를 사용하여 조작해야 합니다. 일부 고급 기능에 액세스하는 데 사용할 수 있는 일부 Apache CXF 특정 API도 있습니다.

27.3.4. 예제

예를 들어 예 26.1. “helloworld WSDL 계약” 에 정의된 서비스의 구현 클래스는 예 27.2. “Greeter 서비스 구현” 로 표시될 수 있습니다. 굵게 표시된 코드 부분만 프로그래머가 삽입해야 합니다.

예 27.2. Greeter 서비스 구현

package demo.hw.server;

import org.apache.hello_world_soap_http.Greeter;

@javax.jws.WebService(portName = "SoapPort", serviceName = "SOAPService",
                      targetNamespace = "http://apache.org/hello_world_soap_http",
                      endpointInterface = "org.apache.hello_world_soap_http.Greeter")

public class GreeterImpl implements Greeter {

    public String greetMe(String me) {
       System.out.println("Executing operation greetMe"); System.out.println("Message received: " + me + "\n"); return "Hello " + me;
    }

    public void greetMeOneWay(String me) {
       System.out.println("Executing operation greetMeOneWay\n"); System.out.println("Hello there " + me);
    }

    public String sayHi() {
       System.out.println("Executing operation sayHi\n"); return "Bonjour";
    }

    public void pingMe() throws PingMeFault {
       FaultDetail faultDetail = new FaultDetail(); faultDetail.setMajor((short)2); faultDetail.setMinor((short)1); System.out.println("Executing operation pingMe, throwing PingMeFault exception\n"); throw new PingMeFault("PingMeFault raised by server", faultDetail);
    }
}