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 정보문화사
댓글
댓글 쓰기