은 분산분배 환경에서 구조적 데이터를 주고 받기 위한 lightweight protocol이다. Goovy는 SOAP서버나 SOAP서버로 부터 리모트 Call을 만들 수 있게 해주는 Xfire
기반으로 SOAP을 구현했다.
$
/.groovy/lib안에 이 jar 파일을 다운로드 받아야 만한다. 이 jar 파일은 groovy-1.0-JSR-06이 요구된다.
Groovy class나 script를 사용해서 웹서비스를 개발할 수 있다. 두개의 groovy파일이 웹서비스를 작성한 것이다.
이 예제는 Groovy SOAP으로 사용자 정의 데이터 타잎을 어떻게 사용하는지를 보여준다. 이코드는 here에서 다운로드 받을 수 있다.
PersonService.groovy script는 서비스의 구현과 사용자 정의 데이터 타잎(Person)을 포함하고 있다.
Server.groovy는 이전 예제와 동일한다.
Groovy 컴파일러로 컴파일 된 각각의 클래스들은 metaclass property가 바이트코드에 포함시켜야한다. 이 프로퍼티는 Xfire와 매핑되어지는걸 막아야만한다, 만약 그렇지 않으면 http://localhost:6980/PersonServiceInterface?wsdl로 부터 WSDL 문서에 획들할때 에러가 발생한다. 이 유는 Xfire가 groovy.lang.MetaClass를 맵핑할 수 없기 때문이다. 사용자 정의 타입 매핑은 메타 클래스 속성을 무시하고 디파인 해야함 한다. (참조 : Aegis Binding).
하지만, 자바 부터 사용자 정의 데이터 타입을 컴파일 한다면 바이트 코드는 metaClass속성의 포함을 원하지 않을 것이다. 그러므로, 커스텀 맵핑을 정의할 필요가 없다.
클라이언트 (ImageClient.groovy)
Base64로 인코딩된 이미가 포함된 서버:
그리고 보호와 보이지 않는 부분은 []이다.
여기 테스팅을 위한 쓸모있는 웹서비스가 있다. 쉬운 예제 중 하나는 webservicex.net.에서 제공해주는 환율을 계산해주는 것이다.
여기 서비스를 사용을 데모해주는 작은 스윙 예제가 있다. Enjoy !
결과: 