『SOA 자바 웹 서비스로 통하는 서비스 지향 아키텍처』는 오늘날 Java EE 5와 Java SE 6 플랫폼을 바탕으로 웹 서비스와 서비스 지향 아키텍처을 구현하는 데에 실용적인 안내서이다. 저자인 마크 한센은 모범적인 설계 사례부터 절정의 코드 예제까지, 엔터프라이즈 개발자와 설계자가 성공에 필요한 정보를 아주 자세히 설명하고 있다.

마크 한센은 느슨하게 결합된 SOA 애플리케이션을 구성하는 웹 서비스를 만들고, 배포하고 호출하는 전 영역을 다루고 있다. 전체적인 자바 웹 서비스의 '큰 그림'을 설명하면서 자바 기반의 SOA 개발의 난관과 기존 방식의 한계부터 꼬집기 시작한다. 그러고 나서, 체계적으로 최신의 Java Web Services(JWS) API를 소개하면서 포괄적인 SOA 솔루션으로 통합하는 웹 서비스를 만드는 과정을 밟아간다. 마지막으로, SOA-J라는 JWS 기반 프레임워크로 어떻게 전체 SOA 개발 절차를 간소화할 수 있는지 보여준다.

 

이 책에서는

  • 웹 서비스와 SOA의 난해함을 해소할 실용적인 기법을 모범 사례와 함께 소개한다.
  • 자바 웹 서비스를 통한 효율적인 SOA 애플리케이션 구축에 대한 고도의 통찰력을 제공한다.
  • JAX-Ws 2.0에 두 장을 할애하면서 최근의 주요 JWS 향상점을 설명한다.
  • WSDL, SOAP, 자바/XML 바인딩, JAXB 2.0 데이터 바인딩을 이용한 SOA 통합을 완전 해설한다.
  • JSR-181(WS-Metadata 2.0)과 JSR-109로 자바 EE 5에 웹 서비스 컴포넌트를 포장하고 배포하는 단계를 차근차근 밟아간다.
  • REST 엔드포인트 게시부터 WSDL로 SOAP 서비스를 호출하기까지 다양한 개발 문제에 대한 정확한 솔루션 코드를 제공한다.
  • 아마존, 야후 소핑, 이베이를 통합하는 SOA 애플리케이션을 만드는 데에 Ajax 프론트 엔드와 더불어 JWS API를 사용하는 완전한 사례 연구를 제시한다.
  • 글래스피시라는 자바 EE 5 참조 구현체로 모두 검증된 수백 가지 예제 코드를 포함하며, 이 책의 공식 사이트를 통해 배포한다.
  • 세계 최초로 Java EE 5 표준인증을 받고, 가장 많은 국내 레퍼런스를 보유한 웹 서비스 플랫폼인 JEUS에서 책에 있는 예제를 실행해 볼 수 있는 특별 부록도 포함돼 있다.

 

추천의 글

새로운 자바 API에 대한 훌륭한 입문서 - 최신 자바 웹 서비스 API의 사용법을 다루며, JAX-WS 2.0에 대한 거의 유일한 책이다. 자바 웹 서비스를 빠르게 시작할 수 있다 - 다른 여러 책들이 있었지만, 결국 이 책을 곁에 두게 되었다.

아마존 독자

마크 D. 한센

마크 D. 한센 박사는 웹 서비스 개발과 통합을 주로 컨설팅하는 회사인 Javector Software의 사장이다. 그는 MIT Sloan 경영 대학원에서 방문 교수로 근무하며 웹 서비스와 비즈니스 프로세스 통합을 연구했다. 정보 관리의 유명 권위자로, Mark Hansen은 Wall Street Journal, Information Week, Computer World, Business Communications Review, EAI Journal, 그리고 Intelligent Enterprise 등에 기고해왔다.

SOA-JWS 팀

SOA-JWS 팀은 JEUS로 토종 자바 웹 서비스 플랫폼의 자존심을 지키는 티맥스소프트 웹 서비스 팀과 Open API로 한국 웹의 플랫폼화를 꿈꾸는 오픈마루 웹 서비스 팀이 만나 번역 협업을 위해 모인 팀입니다. SOAP/WSDL과 같은 기존 웹 서비스 기술과 더불어 웹 2.0의 총아인 REST까지 이 책의 광범위한 주제에 걸맞은 최고의 구성이라 자부할 만합니다.

 

역자 서문

수년간 티맥스에서 미쳐(?) 살았던 분야의 원서라는 치명적인 매력 덕분에 근 1년간 이 책의 번역에 매달리고 말았습니다. 퍼펙트 JSP 개정판 이래 두 번째로 코디네이터 역할까지 감행할 정도로, 제 개발자 인생의 중간평가 같은 심정이라면 너무 솔직한 거 아닌지 모르겠네요.

SOA도 자바 웹 서비스도 이 책을 통해 어렵고 복잡하다는 오명을 씻을 수 있으면 좋겠습니다. 예전 직장의 동료(박호경, 성명식, 조지훈)와 현 직장의 동료(장동준, 정지웅, 강규영)가 함께했다는 것도 특별하기 그지없습니다. 자바, XML, 웹 서비스를 마음껏 토론하고 소통할 수 있었다는 사실만으로, 저는 늘 그렇듯이 팀 모두에게 고마울 뿐입니다.

이렇게 제 10번째 책이 나왔다는 것이 믿기지 않네요. 작년에 참 많이도 다른 분들의 책에 추천사를 썼는데, 제 책이다 보니 참 쑥스럽습니다. 끝으로, 이 책을 내주신 위키북스와 베타 리더 이동국님께 충심으로 감사 드립니다.

오픈마루 플랫폼 오프너 이창신

  • 01장. 자바 웹 서비스와 함께하는 서비스-지향 아키텍처
    • 1.1 내가 멍청한 걸까? 아니면 자바 웹 서비스가 진짜 어려운 걸까?
      • 1.1.1 기술에 쉽게 현혹되지 말라
      • 1.1.2 JWS는 도구 모음이지 애플리케이션이 아니다
      • 1.1.3 깨달음
    • 1.2 웹 서비스 플랫폼 아키텍처
      • 1.2.1 호출
      • 1.2.2 직렬화
      • 1.2.3 배포
    • 1.3 자바 웹 서비스 : 2장 8장
    • 1.4 SOAShopper 사례 연구 : 9장 , 10장
    • 1.5 SOA-J와 WSDL 중심 개발 : 11장
  •  
  • 02장. 자바 웹 서비스 개관
    • 2.1 SOA 애플리케이션 개발에서의 JWS의 역할
      • 2.1.1 가상의 SOA 애플리케이션
      • 2.1.2 SOA 개발을 가능하게 하는 JWS
    • 2.2 사용 편의 특성에 대한 개관
      • 2.2.1 소스 코드 어노테이션
      • 2.2.2 표준 WSDL/자바 매핑
      • 2.2.3 표준 직렬화 컨텍스트
      • 2.2.4 개발 모델
      • 2.2.5 JWS 타협점(Trade-Off)
    • 2.3 JAX-WS 2.0
      • 2.3.1 자바/WSDL 매핑
      • 2.3.2 정적 WSDL
      • 2.3.3 동적 클라이언트와 정적 클라이언트
      • 2.3.4 자바 인터페이스 프록시를 통한 호출
      • 2.3.5 XML로 호출
      • 2.3.6 XML 서비스 프로바이더
      • 2.3.7 핸들러 프레임워크
      • 2.3.8 메시지 컨텍스트
      • 2.3.9 SOAP 바인딩
      • 2.3.10 HTTP 바인딩
      • 2.3.11 예외 상황의 SOAP 결함으로의 변환
      • 2.3.12 비동기 호출
      • 2.3.13 단방향 오퍼레이션
      • 2.3.14 클라이언트 측의 스레드 관리
      • 2.3.15 WSDL 스타일 - RPC/Literal과 Document/Literal Wrapped 스타일의 지원
      • 2.3.16 XML 카탈로그
      • 2.3.17 가참조(Pseudoreference)의 전달(출력과 입/출력 파라미터 Holder<T>)
      • 2.3.18 런타임 엔드포인트의 공개(Java SE 한정)
    • 2.4 JAXB 2.0
      • 2.4.1 XML 스키마의 자바 표현으로의 연동
      • 2.4.2 자바 타입의 XML 스키마로의 매핑
      • 2.4.3 매핑 어노테이션
      • 2.4.4 바인딩 언어
      • 2.4.5 바인딩 런타임 프레임워크(마셜링/언마셜링)
      • 2.4.6 유효성 검증(validation)
      • 2.4.7 이식성(portability)
      • 2.4.8 마셜 이벤트 콜백(Marshal Event Callback)
      • 2.4.9 부분 바인딩
      • 2.4.10 이진 데이터 인코딩(MTOM 혹은 WS-I)
    • 2.5 WS-Metadata 2.0
      • 2.5.1 WSDL 매핑 어노테이션
      • 2.5.2 SOAP 바인딩 어노테이션
      • 2.5.3 핸들러 어노테이션
      • 2.5.4 서비스 구현 빈
      • 2.5.5 WSDL과 자바로부터 시작하기
      • 2.5.6 자동 배포
    • 2.6 엔터프라이즈 웹 서비스: WSEE 1.2
      • 2.6.1 포트 컴포넌트
      • 2.6.2 서블릿 엔드포인트
      • 2.6.3 EJB 엔드포인트
      • 2.6.4 단순화된 패키징
      • 2.6.5 핸들러 프로그래밍 모델
    • 2.7 그 밖의 Java EE 5 어노테이션의 영향력
      • 2.7.1 의존성 주입
      • 2.7.2 인터셉터
      • 2.7.3 EJB 3.0에서의 POJO 지원
    • 2.8 결론
      • 2.8.1 예제 구축과 실행을 위한 환경 설정
  •  
  • 03장. REST를 이용한 기본SOA 85
    • 3.1 왜 REST인가?
      • 3.1.1 REST란 무엇인가?
      • 3.1.2 이 장에서 다루는 주제
    • 3.2 EIS 레코드를 위한 XML 문서와 스키마
      • 3.2.1 반드시 WSDL이 아니라고 인터페이스가 아니라는 의미는 아니다
    • 3.3 JWS를 사용하는 REST 클라이언트와 JWS를 사용하지 않는 REST 클라이언트
      • 3.3.1 JWS를 사용하지 않고 REST 서비스로부터 EIS 레코드 가져오기
      • 3.3.2 JWS를 사용하는 REST 서비스로부터 EIS 레코드 가져오기
      • 3.3.3 JWS 사용 없이 EIS 레코드를 REST 서비스에 보내기
      • 3.3.4 JWS를 사용하여 RESTful 서비스에 EIS 레코드를 보내기
    • 3.4 데이터 변환을 위한 XSLT와 JAXP를 사용한 SOA-스타일 통합
      • 3.4.1 데이터 변환을 위한 XSLT 사용 방법과 이유
      • 3.4.2 JAXP를 사용한 XSLT 처리
    • 3.5 JWS를 사용하는 경우와 사용하지 않는 경우의 RESTful 서비스
      • 3.5.1 JWS를 사용하지 않고 REST 서비스 배포
      • 3.5.2 JWS를 사용하여 RESTful 서비스 배포
    • 3.6 결론
  •  
  • 04장. SOA에서의 WSDL, SOAP 그리고 자바/XML 매핑의 역할
    • 4.1 SOA에서의 WSDL의 역할
      • 4.1.1 WSDL 예제
    • 4.2 SOA에서의 SOAP의 역할
    • 4.3 디스패치: 어떻게 JAX-WS 2.0이 WSDL/SOAP을 자바 호출에 대응시키는가
      • 4.3.1 WSDL 포트 결정
      • 4.3.2 WS-I Basic Profile의 역할
      • 4.3.3 RPC/Literal
      • 4.3.4 Document/Literal
      • 4.3.5 Document/Literal Wrapped
      • 4.3.6 디스패치 처리 요약
      • 4.3.7 SOA 통합을 위한 JAX-WS 2.0 디스패치의 단점
    • 4.4 JAX-WS 2.0 디스패치 제약의 극복
    • 4.5 SOA는 종종 ‘WSDL과 자바로부터’를 원한다
      • 4.5.1 SOA에서의 자바/XML 매핑의 역할
      • 4.5.2 SOA에 있어 자바/XML매핑를 위한 JAXB 2.0의 한계
    • 4.6 JAXB 2.0의 자바/XML 매핑 제한의 극복
      • 4.6.1 스키마 컴파일러와 자바의 사용
      • 4.6.2 스키마 생성기와 XSTL의 사용
    • 4.7 결론
  •  
  • 05장. JAXB 2.0 데이터 바인딩
    • 5.1 바인딩 대 매핑
    • 5.2 표준 JAXB 2.0 자바/XML 바인딩의 개요
    • 5.3 JAXB 2.0으로 타입 매핑 구현하기
    • 5.4 타입 매핑을 위한 재귀적 프레임워크
    • 5.5 JAXB 2.0 어노테이션으로 타입 매핑 구현하기
    • 5.6 JAXB 2.0 바인딩 언어로 타입 매핑 구현하기
    • 5.7 JAXB 2.0 XmlAdapter 클래스로 타입 매핑 구현하기
    • 5.8 XSLT를 대신해 데이터 변환을 처리하는 JAXB 2.0
    • 5.9 결론
  •  
  • 06장. JAX-WS 클라이언트 측 개발
    • 6.1 JAX-WS 프록시
      • 6.1.1 JAX-WS의 WSDL에서 자바로의(WSDL to Java) 매핑
      • 6.1.2 서비스 엔드포인트 인터페이스 어노테이션
      • 6.1.3 프록시로 웹 서비스 호출하기
      • 6.1.4 프록시로 오류 처리하기
    • 6.2 XML 메시징
      • 6.2.1 정제하지 않은(Raw) XML로 XML 메시징하기
      • 6.2.2 커스텀 어노테이션 JAXB 클래스들로 XML 메시징하기
    • 6.3 커스텀 자바/XML 매핑으로 호출하기 : JAXB 대신에 Castor를 사용하는 예제
    • 6.4 비동기 호출
      • 6.4.1 폴링
      • 6.4.2 프록시와 비동기 메소드
      • 6.4.3 콜백
    • 6.5 SOAP 메시지 핸들러
    • 6.6 결론
  •  
  • 07장. JAX-WS 2.0 -서버 측 개발
    • 7.1 JAX-WS 서버 측 구조
    • 7.2 서비스 엔드포인트 인터페이스(SEI)를 사용하는 WSDL로부터 시작하기
    • 7.3 JAXB를 사용하지 않는 프로바이더와 XML 처리
    • 7.4 커스텀 자바/XML 매핑을 사용하는 웹 서비스 배포하기
    • 7.5 유효성 검사와 폴트 처리
      • 7.5.1 유효성 검사(Validataion)
      • 7.5.2 폴트 처리
    • 7.6 서버 측 핸들러
    • 7.7 javax.xml.ws.Endpoint를 사용해 Java SE에서의 배포
    • 7.8 결론
  •  
  • 08장. SOA 컴포넌트의 패키징과 배포 (JSR-181과 JSR-109)
    • 8.1 웹 서비스 패키징과 배포 개요
      • 8.1.1 WAR를 사용한 서블릿 엔드포인트 패키징
      • 8.1.2 EJB-JAR를 사용한 EJB 엔드포인트 패키징
      • 8.1.3 자동배포
      • 8.1.4 컨테이너의 배포 과정에 대한 개요
      • 8.1.5 EJB 엔드포인트 배포와 실행
    • 8.2 배포 기술자 없는 배포
      • 8.2.1 서비스 구현 빈 만을 사용하기
      • 8.2.2 서비스 엔드포인트 인터페이스 사용하기
      • 8.2.3 WSDL 아티팩트를 포함하기
    • 8.3 배포 기술자 사용하기
      • 8.3.1 서블릿 엔드포인트를 위한 web.xml
      • 8.3.2 무상태 세션 빈 엔드포인트를 위한 ejb-jar.xml
      • 8.3.3 webservices.xml을 사용할 때
      • 8.3.4 플랫폼에 한정된 배포 기술자
    • 8.4 글래스피시의 자동배포
    • 8.5 웹 서비스 보안
    • 8.6 OASIS XML 카탈로그 1.1
    • 8.7 요약
  •  
  • 09장. SOAShopper: 이베이, 아마존, 야후 쇼핑 통합하기
    • 9.1 SOAShopper 개요
    • 9.2 SOAShopper SOAP 서비스들
    • 9.3 SOAShopper의 RESTful 서비스와 표준 XML 스키마
    • 9.4 서비스 구현체
    • 9.5 이베이와 아마존 서비스 (SOAP)
    • 9.6 야후 서비스(REST)
    • 9.7 SOAShopper API와 통합 계층
    • 9.8 Java EE상의 실세계 SOA애플리케이션 구현에 대한 결론
  •  
  • 10장. Ajax 와 자바 웹 서비스
    • 10.1 Ajax 개괄
    • 10.2 Java EE 웹 서비스와 Ajax의 연동
    • 10.3 예제 코드 : SOAShopper Ajax 프론트엔드
    • 10.4 Ajax와 Java EE에 대한 결론
  •  
  • 11장. SOA-J를 이용한 WSDL 중심 자바 웹 서비스
    • 11.1 SOA-J 아키텍처
    • 11.2 SOA-J를 이용한 WSDL 중심 개발
    • 11.3 호출(Invocation) 하부시스템
    • 11.4 직렬화(Serialization) 하부시스템
    • 11.5 배포 하부시스템
    • 11.6 결론
  •  
  • 부록 A. 이 책에서 사용되는 자바, XML 그리고 웹 서비스 표준들
  • 부록 B. 소프트웨어 구성 안내
    • B.1 Java EE 5 SDK 설치
    • B.2 아파치 Ant 1.7.x 설치
    • B.3 아파치 Maven 2.0.x 설치
    • B.4 책 예제코드 설치
    • B.5 Maven 설정
    • B.6 Ant 설정
    • B.7 글래스피시 서버의 시작과 정지
    • B.8 예제를 실행하여 설치 테스트하기
    • B.9 SOAShopper Case Study 빌드와 배포(9, 10장)
    • B.10 SOA-J 애플리케이션 프레임워크 빌드하고 배포하기(11장)
    • B.11 Java SE 6 설치 (선택적)
  • 부록 C. 네임스페이스 접두어(Prefix)
  • 부록 X. JEUS 6에서 예제 실행하기
    • X.1 Maven 설정
    • X.2 Ant 설정
    • X.3 예제를 실행하여 설치 테스트하기
  •  
  • 용어 정리
  • 참고 자료
  • 인덱스

예제코드 관련 GitHub 페이지

관련 글