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); } }