-
wsdl2java 간편한 웹서비스 클라이언트 생성프로그래밍/Web Service 2020. 9. 9. 14:28반응형
웹서비스 제공자가 발행하는 WSDL만 있으면 손쉽게 웹서비스 클라이언트를 생성할 수 있다.
Apache CXF 라이브러리를 다운로드하고 wsdl2java 명령어를 사용하여 손쉽게 자바 코드를 생성할 수 있다.
웹서비스 클라이언트를 구축하려면 일단 웹서비스 제공자가 필요할 테니 밑의 글을 참고하거나 WSDL를 발행하는 웹서비스를 찾도록 한다.
wsdl2java를 활용할 주소는 http://localhost:8080/personalInfoService?wsdl 이다. 위의 글을 참고하여 로컬에 구축하였다. URL이나 파일 형태의 WSDL를 확인한다.
wsdl2java 실행에 앞서 필자의 워크스페이스 파일 인코딩은 UTF-8을 사용한다. 그래서 wsdl2java의 스크립트를 다음과 같이 약간 변경하였다.
이후 wsdl2java 명령어를 실행하였다.
D:\apache-cxf-3.4.0\bin>wsdl2java -d D:/workspace/study/studyjaxws/src/main/java -p test.client.webservice -client http://localhost:8080/personalInfoService?wsdl -d 옵션은 자바파일이 생성될 루트 디렉터리로 설정한다. -p 생성될 자바파일의 패키지를 지정한다. -client 옵션을 넣으면 웹서비스 호출하는 샘플 파일이 같이 생성된다. WSDL URL or WSDL File 경로 밑의 CXF 공식 사이트를 참조하면 옵션에 대한 설명이 나와 있다.
-?, -h,-help
이 유틸리티에 대한 온라인 도움말을 표시하고 종료합니다.
-fe frontend-name
프런트 엔드를 지정합니다. 기본값은 JAXWS입니다. 현재 JAX-WS 2.1 호환 코드를 생성하기 위해 JAXWS 프런트 엔드 및 "jaxws21"프런트 엔드 만 지원합니다.
-db databinding-name
데이터 바인딩을 지정합니다. 기본값은 jaxb입니다. 현재 jaxb, xmlbeans, sdo (sdo-static 및 sdo-dynamic) 및 jibx를 지원합니다.
-wv wsdl-version
wsdl 버전을 지정합니다. 기본값은 WSDL1.1입니다. 현재 WSDL1.1 버전만 지원합니다.
-p [ wsdl-namespace= ] PackageName
생성된 코드에 사용할 0 개 이상의 패키지 이름을 지정합니다. 패키지 이름 매핑에 대한 WSDL 네임 스페이스를 선택적으로 지정합니다.
-sn service-name
생성된 코드에 사용할 WSDL 서비스 이름입니다.
-b binding-name
JAXWS 또는 JAXB 바인딩 파일 또는 XMLBeans 컨텍스트 파일을 지정합니다. 여러 항목을 지정하려면 여러 -b 플래그를 사용하십시오.
-catalog catalog-file-name
가져온 wsdl / schema를 맵핑할 카탈로그 파일 지정
-d output-directory
생성된 코드 파일이 기록되는 디렉토리를 지정합니다.
-compile
생성된 Java 파일을 컴파일합니다.
-classdir compile-class-dir
컴파일된 클래스 파일이 기록되는 디렉토리를 지정합니다.
-client
클라이언트 메인 라인의 시작점 코드를 생성합니다.
-clientjar jar-file-name
모든 클라이언트 클래스와 wsdl을 포함하는 jar 파일을 생성합니다. -clientJar가 정의되면 지정된 wsdlLocation이 작동하지 않습니다.
-server
서버 메인 라인의 시작점 코드를 생성합니다.
-impl
구현 객체의 시작점 코드를 생성합니다.
-all
유형, 서비스 프록시, 서비스 인터페이스, 서버 메인 라인, 클라이언트 메인 라인, 구현 오브젝트 및 Ant build.xml파일 과 같은 모든 시작점 코드를 생성 합니다.
-ant
Ant build.xml스크립트 를 생성하도록 지정하십시오 .
-autoNameResolution
바인딩 사용자 지정을 사용하지 않고도 이름 충돌을 자동으로 해결합니다.
-defaultValues=[DefaultValueProvider impl]
impl 및 클라이언트에 대해 기본값이 생성되도록 지정합니다. 사용자 지정 기본값 공급자를 제공할 수도 있습니다. 기본 공급자는RandomValueProvider
-nexclude schema-namespace [=java-packagename]
코드를 생성할 때 지정된 WSDL 스키마 네임 스페이스를 무시하십시오. 이 옵션은 여러 번 지정할 수 있습니다. 또한 제외된 네임 스페이스에 설명된 유형에 사용되는 Java 패키지 이름을 선택적으로 지정합니다.
-exsh (true/false)
암시 적 SOAP 헤더 (예 : wsdl : binding에는 정의되었지만 wsdl : portType 섹션에는 정의되지 않은 SOAP 헤더)의 처리를 활성화하거나 비활성화합니다. SOAP 헤더를 처리하려면 CXF 2.4.x에서 기본값이 아닌 클래스 경로에서 사용할 수 있는 SOAP 바인딩 jar가 필요합니다. 나이. 이 플래그가 작동하려면 cxf-rt-binding-soap에 종속성을 추가해야 할 수 있습니다. 기본값은 거짓입니다.
-dns (true/false)
기본 네임 스페이스 패키지 이름 매핑의 로드를 활성화하거나 비활성화합니다. 기본값은 true이며 http://www.w3.org/2005/08/addressing=org.apache.cxf.ws.addressing 네임 스페이스 패키지 매핑이 활성화됩니다.
-dex (true/false)
기본 제외 네임 스페이스 매핑 로드를 활성화하거나 비활성화합니다. 기본값은 true입니다.
-validate
코드를 생성하기 전에 WSDL의 유효성을 검사할 수 있습니다.
-keep
코드 생성기가 기존 파일을 덮어쓰지 않도록 지정합니다. 결과적으로 발생하는 컴파일 문제를 해결해야 합니다.
-wsdlLocation wsdlLocation
@WebServiceClient 주석의 wsdlLocation 속성 값을 지정합니다.
-xjc<xjc args>
JAXB 데이터 바인딩을 사용할 때 XJC 프로세서로 직접 전달되는 쉼표로 구분된 인수 목록을 지정합니다. 사용 가능한 XJC 플러그인 목록은 -xjc-X.
-noAddressBinding
CXF 2.0과의 호환성을 위해이 플래그는 코드 생성기가 JAX-WS 2.1 호환 WS-Addressing 유형 대신 이전 CXF 독점 WS-Addressing 유형을 생성하도록 지시합니다.
-v
도구의 버전 번호를 표시합니다.
-verbose
코드 생성 프로세스 중에 주석을 표시합니다.
-quiet
코드 생성 프로세스 중에 주석을 억제합니다.
-exceptionSuper
wsdl : fault 요소에서 생성된 결함 Bean의 슈퍼 클래스 (기본값은 java.lang.Exception)
-reserveClass classname
-autoNameResolution과 함께 사용되며 클래스 생성 시 사용하지 않도록 wsdl-to-java의 클래스 이름을 정의합니다. 여러 클래스에 대해이 옵션을 여러 번 사용하십시오.
-allowElementReferences<=true>
(또는 -aer) 참이면, 래퍼 스타일 매핑을 사용할 때 요소 참조를 허용하지 않는 JAX-WS 2.2 사양의 섹션 2.3.1.2 (v)에 제공된 규칙을 무시합니다.
-asyncMethods=foo,bar,...
JAX-WS 바인딩 파일의 enableAsyncMapping과 유사하게 클라이언트 측 비동기 호출을 허용하기 위해 이후에 생성되는 Java 클래스 메서드 목록입니다.
-bareMethods=foo,bar,...
JAX-WS 바인딩 파일의 enableWrapperStyle과 유사한 래퍼 스타일 (아래 참조)을 갖는 후속 생성된 Java 클래스 메서드 목록입니다.
-mimeMethods=foo,bar,...
JAX-WS 바인딩 파일의 enableMIMEContent와 유사하게 mime : content 맵핑을 사용하기 위해 이후에 생성된 Java 클래스 메서드 목록입니다.
-faultSerialVersionUID <fault-serialVersionUID>
오류 예외의 suid를 생성하는 방법. NONE, TIMESTAMP, FQCN 또는 특정 숫자를 사용하십시오. 기본값은 NONE입니다.
-mark-generated
생성된 클래스에 @Generated 주석을 추가합니다.
-suppress-generated-date 생성 된 파일에 현재 타임 스탬프 쓰기를 억제합니다 (CXF 버전 3.2.2 이후). -maxExtensionStackDepth <int> 스키마 확장을 구문 분석 할 때 허용되는 최대 스택 깊이입니다. 기본값은 5입니다 ( CXF 3.3.4 이후 ). wsdlurl
코드 생성에 사용할 WSDL 파일의 경로 및 이름입니다.
wsdl2java 명령어를 실행하면 다음 그림과 같이 자바 파일이 생성된다.
-client 옵션을 선택하여 PInfoByIjyoon_PInfoPort_Client.java 파일이 같이 생성되었다. 해당 자바 파일을 확인하면 웹서비스를 인보크 하는 샘플이 나와있다. value object가 null로 되어있으니 요청 value object 입력하여 호출하여 본다.
호출 후 응답 value object를 확인하면 웹서비스 제공 측에서 전달한 응답 값을 확인할 수 있다.
반응형'프로그래밍 > Web Service' 카테고리의 다른 글
apache cxf 클라이언트 생성하기 (0) 2020.02.22 jax-ws 웹서비스 서버 구축하기 (0) 2020.02.22