목차
추천자 서문 ... xvii
저자 서문 ... xxi
이 책에 대해 ... xxii
01장 자바 웹 서비스와 함께하는 서비스-지향 아키텍처 ... 2
   1.1 내가 멍청한 걸까? 아니면 자바 웹 서비스가 진짜 어려운 걸까? ... 2
      1.1.1 기술에 쉽게 현혹되지 말라 ... 4
      1.1.2 JWS는 도구 모음이지 애플리케이션이 아니다 ... 6
      1.1.3 깨달음 ... 7
   1.2 웹 서비스 플랫폼 아키텍처 ... 8
      1.2.1 호출 ... 8
      1.2.2 직렬화 ... 11
      1.2.3 배포 ... 16
   1.3 자바 웹 서비스 : 2장 ~ 8장 ... 18
   1.4 SOAShopper 사례 연구 : 9장, 10장 ... 21
   1.5 SOA-J와 WSDL 중심 개발 : 11장 ... 22
02장 자바 웹 서비스 개관 ... 25
   2.1 SOA 애플리케이션 개발에서의 JWS의 역할 ... 26
      2.1.1 가상의 SOA 애플리케이션 ... 26
      2.1.2 SOA 개발을 가능하게 하는 JWS ... 29
   2.2 사용 편의 특성에 대한 개관 ... 36
      2.2.1 소스 코드 어노테이션 ... 37
      2.2.2 표준 WSDL/자바 매핑 ... 38
      2.2.3 표준 직렬화 컨텍스트 ... 39
      2.2.4 개발 모델 ... 40
      2.2.5 JWS 타협점(Trade-Off) ... 42
   2.3 JAX-WS 2.0 ... 43
      2.3.1 자바/WSDL 매핑 ... 44
      2.3.2 정적 WSDL ... 45
      2.3.3 동적 클라이언트와 정적 클라이언트 ... 45
      2.3.4 자바 인터페이스 프록시를 통한 호출 ... 46
      2.3.5 XML로 호출 ... 46
      2.3.6 XML 서비스 프로바이더 ... 46
      2.3.7 핸들러 프레임워크 ... 47
      2.3.8 메시지 컨텍스트 ... 48
      2.3.9 SOAP 바인딩 ... 48
      2.3.10 HTTP 바인딩 ... 49
      2.3.11 예외 상황의 SOAP 결함으로의 변환 ... 49
      2.3.12 비동기 호출 ... 50
      2.3.13 단방향 오퍼레이션 ... 50
      2.3.14 클라이언트 측의 스레드 관리 ... 50
      2.3.15 WSDL 스타일 - RPC/Literal과 Document/Literal Wrapped 스타일의 지원 ... 50
      2.3.16 XML 카탈로그 ... 51
      2.3.17 가참조(Pseudoreference)의 전달(출력과 입/출력 파라미터 Holder〈T〉) ... 52
      2.3.18 런타임 엔드포인트의 공개(Java SE 한정) ... 52
   2.4 JAXB 2.0 ... 54
      2.4.1 XML 스키마의 자바 표현으로의 연동 ... 57
      2.4.2 자바 타입의 XML 스키마로의 매핑 ... 59
      2.4.3 매핑 어노테이션 ... 59
      2.4.4 바인딩 언어 ... 62
      2.4.5 바인딩 런타임 프레임워크(마셜링/언마셜링) ... 65
      2.4.6 유효성 검증(validation) ... 69
      2.4.7 이식성(portability) ... 70
      2.4.8 마셜 이벤트 콜백(Marshal Event Callback) ... 71
      2.4.9 부분 바인딩 ... 71
      2.4.10 이진 데이터 인코딩(MTOM 혹은 WS-I) ... 72
   2.5 WS-Metadata 2.0 ... 73
      2.5.1 WSDL 매핑 어노테이션 ... 78
      2.5.2 SOAP 바인딩 어노테이션 ... 78
      2.5.3 핸들러 어노테이션 ... 79
      2.5.4 서비스 구현 빈 ... 79
      2.5.5 WSDL과 자바로부터 시작하기 ... 79
      2.5.6 자동 배포 ... 80
   2.6 엔터프라이즈 웹 서비스: WSEE 1.2 ... 80
      2.6.1 포트 컴포넌트 ... 81
      2.6.2 서블릿 엔드포인트 ... 81
      2.6.3 EJB 엔드포인트 ... 82
      2.6.4 단순화된 패키징 ... 82
      2.6.5 핸들러 프로그래밍 모델 ... 82
   2.7 그 밖의 Java EE 5 어노테이션의 영향력 ... 82
      2.7.1 의존성 주입 ... 82
      2.7.2 인터셉터 ... 83
      2.7.3 EJB 3.0에서의 POJO 지원 ... 83
   2.8 결론 ... 84
      2.8.1 예제 구축과 실행을 위한 환경 설정 ... 84
03장 REST를 이용한 기본 SOA ... 85
   3.1 왜 REST인가? ... 85
      3.1.1 REST란 무엇인가? ... 86
      3.1.2 이 장에서 다루는 주제 ... 87
   3.2 EIS 레코드를 위한 XML 문서와 스키마 ... 88
      3.2.1 반드시 WSDL이 아니라고 인터페이스가 아니라는 의미는 아니다 ... 96
   3.3 JWS를 사용하는 REST 클라이언트와 JWS를 사용하지 않는 REST 클라이언트 ... 97
      3.3.1 JWS를 사용하지 않고 REST 서비스로부터 EIS 레코드 가져오기 ... 98
      3.3.2 JWS를 사용하는 REST 서비스로부터 EIS 레코드 가져오기 ... 101
      3.3.3 JWS 사용 없이 EIS 레코드를 REST 서비스에 보내기 ... 105
      3.3.4 JWS를 사용하여 RESTful 서비스에 EIS 레코드를 보내기 ... 110
   3.4 데이터 변환을 위한 XSLT와 JAXP를 사용한 SOA-스타일 통합 ... 114
      3.4.1 데이터 변환을 위한 XSLT 사용 방법과 이유 ... 115
      3.4.2 JAXP를 사용한 XSLT 처리 ... 121
   3.5 JWS를 사용하는 경우와 사용하지 않는 경우의 RESTful 서비스 ... 126
      3.5.1 JWS를 사용하지 않고 REST 서비스 배포 ... 126
      3.5.2 JWS를 사용하여 RESTful 서비스 배포 ... 132
   3.6 결론 ... 136
04장 SOA에서의 WSDL, SOAP 그리고 자바/XML 매핑의 역할 ... 137
   4.1 SOA에서의 WSDL의 역할 ... 138
      4.1.1 WSDL 예제 ... 141
   4.2 SOA에서의 SOAP의 역할 ... 145
   4.3 디스패치: 어떻게 JAX-WS 2.0이 WSDL/SOAP을 자바 호출에 대응시키는가 ... 151
      4.3.1 WSDL 포트 결정 ... 151
      4.3.2 WS-I Basic Profile의 역할 ... 153
      4.3.3 RPC/Literal ... 154
      4.3.4 Document/Literal ... 156
      4.3.5 Document/Literal Wrapped ... 159
      4.3.6 디스패치 처리 요약 ... 162
      4.3.7 SOA 통합을 위한 JAX-WS 2.0 디스패치의 단점 ... 165
   4.4 JAX-WS 2.0 디스패치 제약의 극복 ... 166
   4.5 SOA는 종종 'WSDL과 자바로부터'를 원한다 ... 175
      4.5.1 SOA에서의 자바/XML 매핑의 역할 ... 178
      4.5.2 SOA에 있어 자바/XML매핑를 위한 JAXB 2.0의 한계 ... 180
   4.6 JAXB 2.0의 자바/XML 매핑 제한의 극복 ... 182
      4.6.1 스키마 컴파일러와 자바의 사용 ... 182
      4.6.2 스키마 생성기와 XSTL의 사용 ... 189
   4.7 결론 ... 194
05장 JAXB 2.0 데이터 바인딩 ... 195
   5.1 바인딩 대 매핑 ... 195
   5.2 표준 JAXB 2.0 자바/XML 바인딩의 개요 ... 199
   5.3 JAXB 2.0으로 타입 매핑 구현하기 ... 209
   5.4 타입 매핑을 위한 재귀적 프레임워크 ... 217
   5.5 JAXB 2.0 어노테이션으로 타입 매핑 구현하기 ... 224
   5.6 JAXB 2.0 바인딩 언어로 타입 매핑 구현하기 ... 235
   5.7 JAXB 2.0 XmlAdapter 클래스로 타입 매핑 구현하기 ... 245
   5.8 XSLT를 대신해 데이터 변환을 처리하는 JAXB 2.0 ... 256
   5.9 결론 ... 262
06장 JAX-WS 클라이언트 측 개발 ... 265
   6.1 JAX-WS 프록시 ... 265
      6.1.1 JAX-WS의 WSDL에서 자바로의(WSDL to Java) 매핑 ... 267
      6.1.2 서비스 엔드포인트 인터페이스 어노테이션 ... 273
      6.1.3 프록시로 웹 서비스 호출하기 ... 279
      6.1.4 프록시로 오류 처리하기 ... 282
   6.2 XML 메시징 ... 285
      6.2.1 정제하지 않은(Raw) XML로 XML 메시징하기 ... 286
      6.2.2 커스텀 어노테이션 JAXB 클래스들로 XML 메시징하기 ... 289
   6.3 커스텀 자바/XML 매핑으로 호출하기 : JAXB 대신에 Castor를 사용하는 예제 ... 292
   6.4 비동기 호출 ... 297
      6.4.1 폴링 ... 297
      6.4.2 프록시와 비동기 메소드 ... 299
      6.4.3 콜백 ... 301
   6.5 SOAP 메시지 핸들러 ... 304
   6.6 결론 ... 310
07장 JAX-WS 2.0 -서버 측 개발 ... 311
   7.1 JAX-WS 서버 측 구조 ... 311
   7.2 서비스 엔드포인트 인터페이스(SEI)를 사용하는 WSDL로부터 시작하기 ... 316
   7.3 JAXB를 사용하지 않는 프로바이더와 XML 처리 ... 320
   7.4 커스텀 자바/XML 매핑을 사용하는 웹 서비스 배포하기 ... 325
   7.5 유효성 검사와 폴트 처리 ... 329
      7.5.1 유효성 검사(Validataion) ... 329
      7.5.2 폴트 처리 ... 332
   7.6 서버 측 핸들러 ... 343
   7.7 javax.xml.ws.Endpoint를 사용해 Java SE에서의 배포 ... 347
   7.8 결론 ... 355
08장 SOA 컴포넌트의 패키징과 배포[JSR-181과 JSR-109] ... 357
   8.1 웹 서비스 패키징과 배포 개요 ... 359
      8.1.1 WAR를 사용한 서블릿 엔드포인트 패키징 ... 360
      8.1.2 EJB-JAR를 사용한 EJB 엔드포인트 패키징 ... 363
      8.1.3 자동배포 ... 365
      8.1.4 컨테이너의 배포 과정에 대한 개요 ... 365
      8.1.5 EJB 엔드포인트 배포와 실행 ... 371
   8.2 배포 기술자 없는 배포 ... 376
      8.2.1 서비스 구현 빈 만을 사용하기 ... 376
      8.2.2 서비스 엔드포인트 인터페이스 사용하기 ... 378
      8.2.3 WSDL 아티팩트를 포함하기 ... 381
   8.3 배포 기술자 사용하기 ... 384
      8.3.1 서블릿 엔드포인트를 위한 web.xml ... 384
      8.3.2 무상태 세션 빈 엔드포인트를 위한 ejb-jar.xml ... 390
      8.3.3 webservices.xml을 사용할 때 ... 395
      8.3.4 플랫폼에 한정된 배포 기술자 ... 397
   8.4 글래스피시의 자동배포 ... 402
   8.5 웹 서비스 보안 ... 405
   8.6 OASIS XML 카탈로그 1.1 ... 407
   8.7 요약 ... 409
09장 SOAShopper: 이베이, 아마존, 야후 쇼핑 통합하기 ... 411
   9.1 SOAShopper 개요 ... 411
   9.2 SOAShopper SOAP 서비스들 ... 417
   9.3 SOAShopper의 RESTful 서비스와 표준 XML 스키마 ... 423
   9.4 서비스 구현체 ... 431
   9.5 이베이와 아마존 서비스(SOAP) ... 434
   9.6 야후 서비스(REST) ... 444
   9.7 SOAShopper API와 통합 계층 ... 450
   9.8 Java EE상의 실세계 SOA애플리케이션 구현에 대한 결론 ... 460
10장 Ajax와 자바 웹 서비스 ... 463
   10.1 Ajax 개괄 ... 464
   10.2 Java EE 웹 서비스와 Ajax의 연동 ... 468
   10.3 예제 코드 : SOAShopper Ajax 프론트엔드 ... 470
   10.4 Ajax와 Java EE에 대한 결론 ... 479
11장 SOA-J를 이용한 WSDL 중심 자바 웹 서비스 ... 481
   11.1 SOA-J 아키텍처 ... 483
   11.2 SOA-J를 이용한 WSDL 중심 개발 ... 486
   11.3 호출(Invocation) 하부시스템 ... 493
   11.4 직렬화(Serialization) 하부시스템 ... 503
   11.5 배포 하부시스템 ... 514
   11.6 결론 ... 519
부록 A 이 책에서 사용되는 자바, XML 그리고 웹 서비스 표준들 ... 523
부록 B 소프트웨어 구성 안내 ... 525
   B.1 Java EE 5 SDK 설치 ... 526
   B.2 아파치 Ant 1.7.x 설치 ... 527
   B.3 아파치 Maven 2.0.x 설치 ... 527
   B.4 책 예제코드 설치 ... 528
   B.5 Maven 설정 ... 528
   B.6 Ant 설정 ... 530
   B.7 글래스피시 서버의 시작과 정지 ... 532
   B.8 예제를 실행하여 설치 테스트하기 ... 532
   B.9 SOAShopper Case Study 빌드와 배포(9, 10장) ... 534
   B.10 SOA-J 애플리케이션 프레임워크 빌드하고 배포하기(11장) ... 535
   B.11 Java SE 6 설치(선택적) ... 535
부록 C 네임스페이스 접두어(Prefix) ... 537
부록 X JEUS 6에서 예제 실행하기 ... 539
   X.1 Maven 설정 ... 539
   X.2 Ant 설정 ... 541
   X.3 예제를 실행하여 설치 테스트하기 ... 543
용어 정리 ... 545
참고 자료 ... 561
닫기