ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • wsdl2java 간편한 웹서비스 클라이언트 생성
    프로그래밍/Web Service 2020. 9. 9. 14:28

      웹서비스 제공자가 발행하는 WSDL만 있으면 손쉽게 웹서비스 클라이언트를 생성할 수 있다.

      Apache CXF 라이브러리를 다운로드하고 wsdl2java 명령어를 사용하여 손쉽게 자바 코드를 생성할 수 있다.

      웹서비스 클라이언트를 구축하려면 일단 웹서비스 제공자가 필요할 테니 밑의 글을 참고하거나 WSDL를 발행하는 웹서비스를 찾도록 한다.

     

     

    jax-ws 웹서비스 서버 구축하기

    웹서비스는 서비스에 대한 정의서(WSDL)를 발행하여 클라이언트가 그 서비스를 어떻게 이용하면 되는지 보다 쉽게 알 수 있다. 자바 웹서비스는 자바 스펙 요구서(Java Specification Request) 224번에 기�

    malchooni.name

      wsdl2java를 활용할 주소는 http://localhost:8080/personalInfoService?wsdl 이다.  위의 글을 참고하여 로컬에 구축하였다.  URL이나 파일 형태의 WSDL를 확인한다.

     

      wsdl2java 실행에 앞서 필자의 워크스페이스 파일 인코딩은 UTF-8을 사용한다.  그래서 wsdl2java의 스크립트를 다음과 같이 약간 변경하였다.

    -Dfile.encoding 추가

      이후 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 공식 사이트를 참조하면 옵션에 대한 설명이 나와 있다.

     

    Apache CXF -- WSDL to Java

      WSDL to JavaNamewsdl2java - takes a WSDL document and generates fully annotated Java code from which to implement a service.Synopsis Usage : wsdl2java -fe|-frontend -db|-databinding -wv -p <[wsdl-namespace =]package-name>* -sn -b * -reserveClass * -cata

    cxf.apache.org

    -?, -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를 확인하면 웹서비스 제공 측에서 전달한 응답 값을 확인할 수 있다.

     

     

    HttpURLConnection을 이용한 Http 클라이언트

    사용자는 웹브라우저(익스플로러, 크롬, 사파리 등등)를 통해 웹서버에게 필요 URI를 요청하고 응답 값을 받는다. 웹브라우저는 그 응답 값(보통 HTML)을 해석하여 화면을 만들어준다. 이 처럼 웹��

    malchooni.name

     

    댓글 0

Designed by Tistory.