31.3. Plain Java 애플리케이션에 서비스 게시
31.3.1. 개요
애플리케이션을 일반 java 애플리케이션으로 배포하려면 애플리케이션의 main()
메서드에 끝점을 게시하기 위한 논리를 구현해야 합니다. Apache CXF는 애플리케이션의 main()
메서드를 작성하는 두 가지 옵션을 제공합니다.
-
wsdl2java
툴에서 생성된main()
메서드 사용 -
엔드포인트를 게시하는 사용자 정의
main()
메서드를 작성합니다.
31.3.2. 서버 메인라인 생성
코드 생성기 -server
플래그를 사용하면 도구가 간단한 서버 메인라인을 생성합니다. 예 31.2. “생성된 서버 메인라인” 에 표시된 대로 생성된 서버 메인라인은 지정된 WSDL 계약에서 각 포트
요소에 대해 하나의 서비스 공급자를 게시합니다.
자세한 내용은 44.2절. “cxf-codegen-plugin” 에서 참조하십시오.
예 31.2. “생성된 서버 메인라인” 생성된 서버 메인라인을 표시합니다.
예 31.2. 생성된 서버 메인라인
package org.apache.hello_world_soap_http; import javax.xml.ws.Endpoint; public class GreeterServer { protected GreeterServer() throws Exception { System.out.println("Starting Server"); Object implementor = new GreeterImpl(); String address = "http://localhost:9000/SoapContext/SoapPort"; Endpoint.publish(address, implementor); } public static void main(String args[]) throws Exception { new GreeterServer(); System.out.println("Server ready..."); Thread.sleep(5 * 60 * 1000); System.out.println("Server exiting"); System.exit(0); } }
예 31.2. “생성된 서버 메인라인” 의 코드는 다음을 수행합니다.
서비스 구현 오브젝트의 사본을 인스턴스화합니다.
엔드포인트 계약에서 wsdl:port
요소의 주소
하위 항목에 따라 끝점의 주소를 생성합니다.
엔드포인트를 게시합니다.
31.3.3. 서버 메인라인 작성
Java 첫 번째 개발 모델을 사용하거나 생성된 서버 메인라인을 사용하지 않으려면 직접 작성할 수 있습니다. 서버 메인라인을 작성하려면 다음을 수행해야 합니다.
-
“서비스 공급자 인스턴스화” 서비스 공급자의
javax.xml.ws.Endpoint
오브젝트입니다. - 서비스 공급자를 게시할 때 사용할 선택적 서버 컨텍스트를 생성합니다.
-
“서비스 공급자 게시”
publish()
메서드 중 하나를 사용하는 서비스 공급자입니다. - 애플리케이션을 종료할 준비가 되면 서비스 공급자를 중지합니다.
예 31.3. “사용자 지정 서버 메인라인” 서비스 공급자를 게시하는 코드를 표시합니다.
예 31.3. 사용자 지정 서버 메인라인
package org.apache.hello_world_soap_http; import javax.xml.ws.Endpoint; public class GreeterServer { protected GreeterServer() throws Exception { } public static void main(String args[]) throws Exception { GreeterImpl impl = new GreeterImpl(); Endpoint endpt.create(impl); endpt.publish("http://localhost:9000/SoapContext/SoapPort"); boolean done = false; while(!done) { ... } endpt.stop(); System.exit(0); } }
예 31.3. “사용자 지정 서버 메인라인” 의 코드는 다음을 수행합니다.
서비스 구현 오브젝트의 복사본을 인스턴스화합니다.
서비스 구현을 위해 게시되지
않은 끝점을 생성합니다.
http://localhost:9000/SoapContext/SoapPort 에서 서비스 공급자를 게시합니다.
서버를 종료해야 할 때까지 루프를 수행합니다.
게시된 엔드포인트를 중지합니다.