2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

Wsdl2Java로 Stub & Skeleton Class 생성

Axis는 WSDL 문서에서 자바의 Proxy Class를 생성할 수 있도록 도구를 제공한다.

그것이 바로 org.apache.axis.wsdl.Wsdl2Java라는 툴이다.

이 툴을 사용하면 클라이언트는 WSDL 문서를 통해 동적으로 생성한 프록시 클라이언트를 통해서

서비스에 접근이 가능하다.

Wsdl2Java를 사용하면 자바 클래스가 생성이 되는데 다음 두 가지 클래스가 생성된다.

  • Stub Class : 원격 웹 서비스와 동일한 인터페이스를 가진 자바 클래스.
    원격 서비스에 대한 프록시 역할을 하여 로컬에 존재하는 것처럼 사용할 수 있게 해 준다.
    Stub Class 안에는 종점URL, Namespace, 인자배열 등 Service Class 와 Call Class를
    이용한 동적 호출과 관련된 정보들이 담겨있다.
    생성되는 파일은 <원본파일명>PortType.java / <원본파일명>SoapBindingStub.java 이며
    각 파일은 웹 서비스의 포트 타입 인터페이스와 메소드 호출을 SOAP으로 변환하는 기능에
    대한 내용이 삽입되어 있다. 
  • Skeleton Class : 서버측에서 사용되는 프레임워크로 만약 구현하고자 하는 서비스에
    대한 WSDL문서가 있따면 그 문서만을 이용해서 Skeletion을 작성할 수 있다.
    Wsdl2Java를 실행할 때 옵션에 --skeleton 옵션을 주면 된다.
    생성되는 파일은 Stub와 같은 파일들과 함께 네 가지 파일들이 더 생성이 되는데
    <원본파일명>SoapBindingSkeleton.java / <원본파일명>SoapBindinglmpl.java 와
    deploy.wsdd 와 undeploy.wsdd 이다.
    차례대로 BindingSkeleton 에는 Axis와 웹 서비스 사이에 위치하는 Class가 담겨있으며
    SoapBindinglmpl 에는 실제 구현하려는 웹 서비스의 내용을 구현한 클래스가 담겨있다.
    deploy.wsdd 는 AdminClient Tool을 이용하여 웹 서비스를 설치하는 디스크립터 파일이고
    undeploy.wsdd는 AdminClient Tool을 이용하여 웹 서비스를 제거하는 디스크립터 이다.
명령어 예시는 다음과 같다. 
WSDL2Java -o . –d Application -S true FactServiceByWSDL.wsdl 
여기서 ‘-o .’ 옵션은 현재 디렉토리에 WSDD 파일들과 자바 파일들을 생성하며, ‘-d Application’

옵션은 운용범위를 나타낸다.

‘–S true’ 옵션은 Skeleton 클래스를 생성할 것인지, 생성하지 않을 것인지를 결정하는 요소로써

만약 위와 같이 true로 설정할 경우 SoapBindingSkeleton 클래스가 별도로 생성된다.

기본값인 false로 설정되어 있을 경우, SoapBindingSkeleton 클래스의 생성이 생략되고 서비스

요청이 SoapBindingImpl 클래스로 바로 포워딩되어 웹 서비스를 호출하게 된다.

(자세한 옵션값에 대한 설명은 Wsdl2Java -h Option으로 확인이 가능하다.)

결과적으로 생성된 Java 파일들을 전부 Compile 해 주면 다음과 같다.
 

이렇게 생성된 Stub 과 Skeleton Class들의 상호연관관계를 그림으로 표현하면 다음과 같다.



출처 및 참조 : Apache Axis 기반의 웹서비스 운용절차서 by 오지훈 님
Professional Java Web Service by 정보문화사

댓글

이 블로그의 인기 게시물

성공적인 소셜커머스를 위한 10단계 전략

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우