메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

SOAP 클라이언트 (한글)

범용 Java SOAP 클라이언트

Bob DuCharme, VP of Corporate Documentation, UDICo
picture of Bob DuCharme
Bob DuCharme (www.snee.com/bob)은 Manning Publications의 XSLT Quickly, Prentice Hall의 XML: The Annotated Specification and SGML CD, McGraw Hill의 Operating Systems Handbook의 저자이다. XML.com에 "Transforming XML" 칼럼을 연재하고 있으며, XML Magazine, XML Journal, IBM developerWorks, Prentice Hall의 XML Handbook에 글을 기고하고 있다. 컨퍼런스에서도 활발한 활동을 하는 Bob은 UDICo (www.udico.com)의 기업 문서 부분 부회장이다. Columbia University에서 종교학 학사 학위를 받았고, New York University에서 컴퓨터 공학 석사 학위를 받았다. Park Slope, Brooklyn에서 아내와 두 딸과 함께 살고 있다.

요약:  이 글에서는 특별한 SOAP 라이브러리가 없는 자바로 작성된 간단한 범용 SOAP 클라이언트를 설명합니다. 이 클라이언트는 SOAP의 요청 XML 문서를 내부에서 자동적으로 생성하는 대신, 임의의 XML 에디터(혹은 텍스트 에디터)를 사용하여 사용자가 직접 만든 요청을 사용할 수 있게 해줍니다. 이 클라이언트는 또한 원격 메소드의 값을 리턴하는 대신, 실제 SOAP의 응답 XML 문서를 보여줍니다. 짧은 자바 프로그램을 통해 SOAP에 대해 배워봅시다. HTTP 연결을 하고, XML을 보내서 원격 메소드를 호출한 다음, 서버에서 리턴된 XML 응답을 읽습니다.

원문 게재일:  2007 년 3 월 20 일
난이도:  초급
페이지뷰:  7454 회
의견:  


Simple Object Access Protocol(SOAP)은 IBM, Microsoft, DevelopMentor, UserLand Software에서 공동 참여하여 만든 네트워크를 통한 정보 교환용 W3C 표준이다. 점점 더 많은 SOAP 서버들을 웹에서 사용할 수 있게 되면서, SOAP은 거의 모든 프로그램- Visual Basic, JavaScript, Perl 같은 대중적이며 단순한 언어로 작성된 프로그램 포함-에서 실행될 수 있다. SOAP을 통해, 웹에서 사용할 수 있는 많은 정보 소스들을 활용할 수 있다.

HTML과 마찬가지로, SOAP은 HTTP 전송 프로토콜을 사용하여 웹을 통해서 보내지는 다양한 정보의 역할을 지정하는 태그를 제공한다. (SOAP 1.1부터는 SMTP도 마찬가지다.) 하지만 SOAP은 HTML 보다 더 훨씬 강력하다. SOAP을 사용해서, 프로그램은 "SOAP 요청"(원격 머신에서 호출할 메소드와 매개변수를 설명하고 있는 짧은 XML 문서)를 SOAP 서버로 보낸다. SOAP 서버는 그러한 매개변수를 가진 메소드를 실행하고 SOAP 응답을 다시 프로그램으로 보낸다. 응답은 실행 결과가 되거나 에러 메시지가 될 수 있다. 퍼블릭 SOAP 서버는 주식 가격, 최신 환율, FedEx 운송 정보, 대수식에 대한 해답, 모든 종류의 정보를 SOAP 클라이언트에 제공할 수 있다.

SOAP가 생겨나기 전에, 이러한 종류의 정보를 사용하는 프로그램들은 웹 페이지를 가져와서 해당 텍스트를 찾기 위해 HTML을 분석해야 했다. 그러한 웹 페이지들을 다시 디자인 하는 것은(예를 들어, 현재 주식 시세를 테이블의 두 번째 칼럼 대신 세 번째 칼럼에 두는 일) 이러한 프로그램을 쓸모 없게 만들기만 할 뿐이었다. SOAP 스팩과 SOAP 요청과 응답과 관련한 스키마는 훨씬 더 강력한 클라이언트와 서버간 연결 프레임웍을 제공한다.

대중적인 프로그래밍 언어에 사용할 수 있는 많은 SOAP 클라이언트들이 있다. SOAP::Lite for Perl 홈 페이지에서 SOAP Toolkits 섹션을 참조하라. (참고자료) 본 자료는 자신의 프로그램에서 호출할 수 있는 클래스 라이브러리, COM 객체 등을 제공한다. 일반적으로 이러한 클라이언트 라이브러리는 다음과 같은 패턴을 따른다.

  1. 프로그램은 호출할 원격 메소드의 이름과 필요한 매개변수들을 전달한다.
  2. 라이브러리는 정보를 패키징 하기 위해 SOAP 요청에 대한 알맞은 XML 문서를 생성한다.
  3. 라이브러리는 SOAP 엔드포인트 URL로 구분된 SOAP 서버로 XML 문서를 전달한다. 대개의 경우, 웹서버 주소에 SOAP서버의 URL을 지정하는 방식으로 브라우저로 연결해 볼 수 있다.
  4. SOAP 서버가 메소드 실행을 시도한 후에, 실행 결과에 대한 SOAP 응답 XML 문서를 생성하고 이를 SOAP 클라이언트로 보낸다.
  5. 클라이언트 라이브러리는 SOAP 응답을 받은 후, XML을 파싱하여 메소드 호출 결과를 받아서 그 결과를 프로그램에 전달한다.

SOAPClient4XG

SOAP 개요 (Graham Glass의 "The Web services (r)evolution" 칼럼-developerWorks)에서는 SOAP 요청과 응답에 사용되는 XML 문서의 구조에 대해서 설명하고 있지만, 내가 사용했던 SOAP 클라이언트는 언제나 XML 생성과 파싱을 자동으로 처리해줬기 때문에 나는 그런 일들을 처리 할 필요가 없었다. XML 사용자로서, 나는 XML 부분은 내 스스로 해보고 싶었다. SOAP가 그렇게 단순하다면 SOAP 요청에 대한 XML 문서를 읽는 간단한 SOAP 클라이언트를 작성하여, 이것을 지정된 SOAP 엔드포인트 URL로 보내고, 응답 문서를 읽고, 결과를 출력할 수 있겠다는 생각이 들었다. 이는 어떤 서버의 어떤 메소드라도 호출할 수 있기 때문에 진정한 범용클라이언트가 될 것이다.

Listing 1의 SoapClient4XG ("SOAP Client for XML Geeks") 자바 클래스는 앞서 언급한 SOAP Toolkits 페이지에 열거된 특별한 Java SOAP 클래스를 사용하지 않고도 수행된다. (참고자료) 필요한 SOAP 엔드포인트 URL과 SOAP XML 문서 파일 이름 매개변수들과 원래의 SOAP 액션 매개변수를 검사한 후에, 파일을 읽고, 이것을 SOAP 서버로 보내고, 다시 응답을 읽고 그 결과를 출력한다.

SOAP 클라이언트는 HTTP 프로토콜을 사용하여 XML SOAP 요청을 보내기 때문에, 가장 필요한 작업은 HTTP 설정이다. 자바는 HTTP 매개변수들을 설정할 HttpURLConnection 클래스와 수 많은 "set" 메소드를 제공하고, 이들 중 대부분이 단순한 문자열로 설정될 수 있다. 약간의 추가 코드를 필요로 하는 한 가지 HTTP 매개변수는 Content-Length이고, SoapClient4XG는 XML 요청의 길이를 계산한다. 이것을 요청을 읽은 후에 바이트 어레이에 놓고 바이트 어레이의 length 프로퍼티를 체크한다.

이러한 HTTP 매개변수들을 설정할 수 있는 다른 HTTP 구현들도 사용할 수 있다. Sun의 오픈 소스 Brazil 웹 애플리케이션 프레임웍(참고자료)는 HTTP 핸들링을 자동화 하고, SOAP 에러 핸들링을 더욱 쉽게 한다. 오래된 HttpURLConnection 클래스와는 달리 이것은 범용 HTTP 클래스로서 특별히 자바 애플릿으로 손쉽게 이미지나 웹 리소스들을 불러오도록 작성되지는 않았다.

Listing 1의 전체 SOAP 클라이언트를 참조하라.


실행하기

Xmethods.com (참고자료)에서는 공개적으로 사용할 수 있는 SOAP 서비스 리스트를 제공하고 있다. 추가적으로 각 서비스가 필요로 하는 추가 SOAP Action 파라메터의 여부와 샘플 요청들을 포함한 대한 설명들을 제공하기 때문에, 나는 그곳에서 제공하는 날씨기온 SOAP 서버의 샘플 요청을 복사하여 몇 개의 공백을 추가하고 zipcode 요소에 내가 속한 zip code를 사용하였다. (Listing 2)

이 파일을 weattherreq.xml이라는 파일에 저장하고, Listing 3의 명령은 샘플 XML을 받았던 같은 XMethods 웹 페이지에 지정된 SOAP 엔드포인트 URL로 내용을 보낸다.

Listing 4를 보면, SOAP 서버는 response 엘리먼트에 저장된 현재 기온에 대한 SOAP 응답을 보낸다.

이 SOAP 클라이언트는 여러분이 만든 XML 문서 파일에서 SOAP 요청을 보내기 때문에, 클라이언트가 내부에서 자동으로 요청을 만드는 대신 XML 에디터나 텍스트 에디터를 사용하여, 보내지는 XML을 직접 다룰 수 있다. 더 중요한 점은 이 클라이언트는 늘어나는 SOAP 서비스들을 약간의 작업만으로 선택적으로 호출 할 수 있다는데 장점이 있다는 것이다. 서비스의 SOAP 엔드포인트 URL의 이름을 정하고, HTTP 매개변수를 설정하고, 호출할 메소드와 매개변수를 나타내는 XML을 보내고 응답을 기다리면 된다.

여러분이 좋아하는 프로그래밍 언어에 SOAP 라이브러리가 있는지 점검해 보라. 나의 SOAP 클라이언트보다 더 나은 에러 핸들링을 제공하고, 강력한 애플리케이션 개발 향상에 기여하는 토대가 될 기능도 있을 것이다. 하지만, 단순하면서도 궁극적인 것이 내재되어 있는 이 간단한 프로토콜은 대단한 것을 해낼 수 있다는 것을 명심하기 바란다)

(Michael Brennan에게 감사의 말을 전한다.)

기사의 원문보기


참고자료

필자소개

picture of Bob DuCharme

Bob DuCharme (www.snee.com/bob)은 Manning Publications의 XSLT Quickly, Prentice Hall의 XML: The Annotated Specification and SGML CD, McGraw Hill의 Operating Systems Handbook의 저자이다. XML.com에 "Transforming XML" 칼럼을 연재하고 있으며, XML Magazine, XML Journal, IBM developerWorks, Prentice Hall의 XML Handbook에 글을 기고하고 있다. 컨퍼런스에서도 활발한 활동을 하는 Bob은 UDICo (www.udico.com)의 기업 문서 부분 부회장이다. Columbia University에서 종교학 학사 학위를 받았고, New York University에서 컴퓨터 공학 석사 학위를 받았다. Park Slope, Brooklyn에서 아내와 두 딸과 함께 살고 있다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=XML
ArticleID=202790
ArticleTitle=SOAP 클라이언트 (한글)
publish-date=03202007
author1-email=bob@snee.com
author1-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.