JAXP, WEB Service, SOAP 김만수 자바 개발자를 위한 XML JAXP, WEB Service, SOAP 김만수
CHAPTHER 11-17 JAXP(Java API for XML Processing) 웹 서비스와 SOAP
1. JAXP(Java API for XML Processing) XML 파서에 무관하게 XML 문서를 파싱, 변환할 수 있는 방법을 제공 J2SDK 1.4에 포함 J2SDK 1.4 이전 버전 http://java.sun.com/xml/jaxp에서 JAXP 다운로드 JAXP Package 구성 javax.xml.parser 여러 벤터에서 만들어진 SAX와 DOM 파서를 위한 공통된 인터페이스 제공 org.w3c.dom DOM을 위한 API 제공 org.xml.sax SAX API를 제공 javax.xml.transform XML 문서를 다른 문서로 변환하기 위한 XSLT API를 제공
1. JAXP(Java API for XML Processing) JAXP Package를 Import 파서를 생성
1. JAXP(Java API for XML Processing) JAXP를 이용한 XSLT 표준화된 API를 이용해서 XML 문서를 변환 XSLT에 관련된 Package javax.xml.transform Transform 객체를 위한 팩토리 클래스 정의 javax.xml.transform.dom 변환의 입력과 결로 DOM을 사용할 수 있도록 DOM Source와 DOMResult 클래스를 정의 javax.xml.transfrom.sax 변환의 입력으로 SAX 이벤트 생성기를 사용할 수 있는 SAXSource와 SAXResult 클래스를 정의 javax.xml.transform.stream 변환의 입력과 출력으로 스트림을 사용할 수 있도록 StreamSource와 StreamReslut 클래스를 정의
2. 웹 서비스와 SOAP 순서 웹 서비스 소개 SOAP(Simple Object Access Protocol) 소개 Axis(Apache Extensible Interaction System) 사용 JAXML(Java API for XML Messaging) JAXP-RPC(Java API for XML-based RPC)
2.1 WEB Service의 소개 WEB의 일상생활화 WEB Application 메일, 게시판, 상품 구입, 예약, 은행 업무 등을 처리 WEB Application 웹을 이용해서 데이터를 처리하는 프로그램 웹 기반 응용프로그램이 시장을 주도 웹이 컴퓨터에서 매우 중요한 분야 웹 기술의 지속적인 발전 사용자들의 다양한 요구가 반영
2.1 WEB Service의 소개 WEB의 발전 특징 WEB 컨텐츠가 동적인 형태로 발전 빠른 인터넷 통신, 대용량의 저장 매체, 저렴한 인터넷 비용 Pervasive Computing이 점차 중요 네트워크 기능이 있는 핸드폰, PDA, 가전제품 등 널리 퍼져 있고, 일상에서 쉽게 접근 가능 일반적으로 이동성이 있고 생활환경에 포함 네트워크 구조에 연결 Pervasive Computing의 발전 다양한 플랫폼 기기들의 연동 XML과 같은 플랫폼 독립적인 기술의 중요성이 높아짐
2.1 WEB Service의 소개 Pervasive Computing Any Device Any Network Any Data
2.1 WEB Service의 소개 WEB Service IBM사의 WEB Service의 정의 WEB 기술과 XML을 이용한 분산 컴퓨팅 기술 CORBA, RMI, DCOM과 같은 기존 기술들을 대신하여 사용 WEB 접근이 보다 쉽다 어느 곳에서도 사용이 가능 MS와 IBM이 주도적으로 개발 IBM사의 WEB Service의 정의 “웹 서비스는 표준화된 XML 메시징을 통해서 네트워크로 접근할 수 있는 오퍼레이션들을 기술할 수 있는 인터페이스이다. 웹 서비스는 특정 작업을 수행할 수 있다.” MS사의 WEB Service의 정의 “웹 서비스는 다른 응용프로그램에 서비스와 데이터를 제공하는 프로그램 로직의 일부분이다. 응용프로그램은 HTTP, XML, SOAP과 같이 어디서든지 사용할 수 있는 웹 프로토콜과 데이터 포맷을 이용해서 웹 서비스를 접근할 수 있다.”
2.1 WEB Service의 소개 WEB Service의 장점 플랫폼/언어 독립성 JIT(Just-in-time) 통합 서비스 제공자와 서비스 요청자 사이의 상호 작용은 완전히 언어와 플랫폼에 무관 WSDL 문서에 서비스에 대한 기술과 인터페이스를 정의 JIT(Just-in-time) 통합 서비스 요청자는 서비스 제공자를 찾기 위해서 서비스 브로커를 이용 제공자를 찾으면 제공자의 WSDL 문서가 요청자의 서비스를 bind하기 위해 사용 요청자, 제공자, 브로커가 시스템을 구성하기 위해 협동 Service Broker Find Publish Service Requester Service Provider Bind
2.1 WEB Service의 소개 WEB Service 중요 구성요소 서비스 제공자(Service Provider) 웹 서비스를 위한 코드를 구현 구현된 서비스를 웹에 배치(deploy) 서비스에 관한 사항들을 WSDL을 이용해서 기술 서비스 브러커에서 WSDL로 기술된 서비스 내용을 공표 서비스 요청자(Service Requester) API를 이용해서 서비스 브로커에 필요한 서비스에 대한 질의 서비스 브로커가 결과를 리턴 특정한 서비스에 연결
2.1 WEB Service의 소개 WEB Service Layer 서비스 공표 및 찾기 (UDDI : Universal Description, Discovery and Integration) 서비스 기술 (WSDL : WEB Service Description Language) SOAP이 선택된 이유 SOAP은 문서 중심 메시지 통신과 원격 함수 호출을 위한 표준화된 방법을 제공 XML과 HTTP POST를 사용하기 때문에 간단 SOAP 메시지는 웹 서비스의 publish, find, bind 오퍼레이션을 지원 XML Messaging (SOAP : Simple Object Access Protocol) 네트워크 (HTTP, SMTP, …)
2.2 SOAP(Simple Object Access Protocol) 분산 환경에서 구조적이고 타입이 있는 정보를 XML을 이용해서 교환하기 위한 프로토콜 MS에서 처음으로 제안 W3C에서 1.1이 표준, 현재 1.2가 표준화 진행 중 기존의 분산 환경에서의 원격 함수 호출 방법 CORBA의 IIOP(Internet Inter-ORB Protocol) DCOM의 ORPC(Object Remote Procedure Call) 문제점 바이너리 형태 플랫폼이 다양한 인터넷 환경에서는 적당하지 않음 통신 프로토콜간의 호환성이 결여 CORBA-DCOM Bridge 복잡하고, 호환성에 문제
2.2 SOAP(Simple Object Access Protocol) XML을 이용한 원격 함수 호출 프로토콜 텍스트 기반의 프로토콜 구현이 쉬움 사람이 읽을 수 있는 형태의 요청이기 때문에 디버깅 쉬움 호환성이 높기 때문에 널리 사용될 수 있음 SOAP 실행 환경 HTTP 프로토콜 상위에서 동작 HTTP 프로토콜은 모든 플랫폼의 웹 서버와 웹 브라우저에서 지원 PDA와 핸드폰 등의 소형 가전 제품에서 사용 가능 http://www.w3.org/TR/SOAP
2.2 SOAP(Simple Object Access Protocol) WEB 서비스에서 SOAP의 사용 용도 두 가지 EDI (Electronic Data Interchange) 전자 문서를 교환 물품 주문서, 세금 계산서 등을 SOAP을 이용해서 전달 SUN에서는 JAXM(Java API for Messaging) 제공 RPC(Remote Procedure Call) 원격 함수를 호출 SOAP을 통해서 전달되는 내용 호출할 메쏘드의 이름 매개 변수 리턴 값 RPC 스타일 SOAP을 위해 SUN에서는 JAX-RPC 제공
2.2 SOAP(Simple Object Access Protocol) Service Requestor Service Provider Application Application WEB Service 1 4 3 2 SOAP SOAP Network Protocol Network Protocol Response Request (Service Invocation)