목차 일부
제1장 J2EE 플랫폼(Java 2 Enterprise Edition Platform) ... 23
1.1 멀티 분산 처리 애플리케이션 ... 26
1.1.1 J2EE 컴포넌트 ... 26
1.1.2 J2EE 클라이언트 ... 27
1.1.3 J2EE 웹 컴포넌트 ... 29
1.1.4 J2EE EJB 컴포넌...
더보기
목차 전체
제1장 J2EE 플랫폼(Java 2 Enterprise Edition Platform) ... 23
1.1 멀티 분산 처리 애플리케이션 ... 26
1.1.1 J2EE 컴포넌트 ... 26
1.1.2 J2EE 클라이언트 ... 27
1.1.3 J2EE 웹 컴포넌트 ... 29
1.1.4 J2EE EJB 컴포넌트 ... 30
1.1.5 기업 정보 시스템 ... 31
1.2 J2EE 컨테이너 ... 32
1.2.1 컨테이너 서비스 ... 32
1.2.2 컨테이너의 종류 ... 33
1.3 웹 서비스 지원 ... 34
1.4 패키징 ... 36
1.5 배치 ... 38
1.6 J2EE 1.4 플랫폼 API ... 40
1.7 Sun Microsystems Application Server ... 46
1.7.1 애플리케이션 서버 프로그램의 설치 ... 46
1.7.2 애플리케이션 서버 프로그램의 구성 요소 ... 54
1.7.3 애플리케이션 서버 프로그램의 시작과 종료 ... 55
1.7.4 PointBase DB 서버의 시작과 종료 ... 59
1.7.5 애플리케이션 서버의 로그 파일 ... 61
1.8 단원 정리 ... 63
제2장 XML(eXtensible Markup Language) ... 65
2.1 XML과 HTML ... 68
2.2 XML 문서의 구조 ... 70
2.3 XML 파서 ... 72
2.3.1 DOM 파서 ... 72
2.3.2 SAX 파서 ... 73
2.3.3 두 파서의 장ㆍ단점 ... 75
2.4 DTD의 구현 ... 75
2.4.1 DTD 작성하기 ... 76
2.4.2 DTD에 엘리먼트 선언하기 ... 77
2.4.3 DTD에 속성 선언하기 ... 80
2.4.4 DTD에 엔티티 선언하기 ... 81
2.4.5 DTD에 조건부 섹션 선언하기 ... 84
2.5 DOM 파서의 사용 ... 85
2.5.1 XML 문서 읽어 오기 ... 87
2.5.2 XML 문서 수정하기 ... 91
2.5.3 새로운 노드를 생성하고 추가하기 ... 93
2.5.4 새로운 XML 문서를 생성하기 ... 95
2.6 XSLT로 XML 문서의 변환 ... 96
2.7 SAX 파서의 사용 ... 100
2.8 단원 정리 ... 109
제3장 RMI(Remote Method Invocation) ... 111
3.1 RMI의 구조 ... 114
3.2 원격 객체의 위치 검색 ... 116
3.3 RMI 레지스트리와 Naming 클래스의 사용 ... 120
3.3.1 원격 인터페이스 작성하기 ... 121
3.3.2 원격 인터페이스 구현 클래스 작성하기 ... 122
3.3.3 원격 객체를 등록하는 서버 프로그램 구현하기 ... 123
3.3.4 원격 객체를 이용하는 클라이언트 프로그램 구현하기 ... 124
3.3.5 RMI 예제를 컴파일하고 실행하기 ... 125
3.4 LocateRegistry 클래스의 사용 ... 128
3.5 원격 객체의 활성화 ... 130
3.5.1 활성화 그룹과 활성화 객체 ... 130
3.5.2 활성화 서술자 ... 131
3.5.3 활성화 객체 작성하기 ... 133
3.5.4 활성화 객체 예제를 컴파일하고 실행하기 ... 137
3.6 RMI over IIOP 프로토콜의 사용 ... 139
3.6.1 애플리케이션 구현하기 ... 140
3.6.2 RMI - IIOP 예제를 컴파일하고 실행하기 ... 144
3.7 단원 정리 ... 146
제4장 JNDI와 LDAP(Java Naming Directory Interface and LightweightDirectory Access Protocol) ... 149
4.1 네이밍 서비스 ... 151
4.2 디렉토리 서비스 ... 152
4.3 JNDI ... 153
4.3.1 javax.naming 패키지 ... 154
4.3.2 javax.naming.directory 패키지 ... 158
4.3.3 Javax.naming.event 패키지 ... 160
4.3.4 javax.naming.spi 패키지 ... 161
4.3.5Javax.naming.ldap 패키지 ... 161
4.4 JNDI의 컨텍스트 ... 161
4.5 네이밍 서비스 예제 ... 162
4.6 DNS 프로바이더 예제 ... 166
4.7 단원 정리 ... 168
제5장 Stateless Session Bean ... 171
5.1 엔터프라이즈 자바 빈 ... 173
5.1.1 지역 클라이언트와 원격 클라이언트 ... 174
5.1.2 인터페이스 API ... 175
5.2 세션 빈 ... 178
5.3 세션 빈의 작성 ... 180
5.3.1 홈 인터페이스 ... 180
5.3.2 컴포넌트 인터페이스 ... 181
5.3.3 세션 빈 클래스 ... 184
5.3.4 배치 기술서 ... 185
5.4 Stateless Session Bean ... 186
5.4.1 라이프 사이클 ... 187
5.4.2 시퀀스 다이어그램 ... 189
5.4.3 ejbCreate()와 ejbRemove() 메소드 ... 192
5.4.4 ejbPassivate()와 ejbActivate() 메소드 ... 192
5.4.5 인스턴스의 풀링 ... 192
5.4.6 세션 빈에서의 멤버 변수 선언 ... 193
5.4.7 비즈니스 메소드 호출 ... 193
5.4.8 웹 서비스 엔드포인트 ... 193
5.5 Stateless Session Bean 예제 ... 194
5.5.1 원격 인터페이스 ... 194
5.5.2 홈 인터페이스 ... 195
5.5.3 세션 빈 클래스 ... 195
5.5.4 소스 컴파일하기 ... 197
5.5.5 배치 기술서 ... 197
5.5.6 소스 패키징하기 ... 199
5.5.7 애플리케이션 클라이언트 구현하기 ... 201
5.5.8 애플리케이션 클라이언트 패키징하기 ... 203
5.5.9 애플리케이션 클라이언트의 빈 레퍼런스 지정하기 ... 205
5.5.10 웹 클라이언트 구현하기 ... 206
5.5.11 웹 클라이언트 패키징하기 ... 207
5.5.12 웹 클라이언트의 빈 레퍼런스 지정하기 ... 210
5.5.13 엔터프라이즈 자바 빈 레퍼런스 매핑하기 ... 211
5.5.14 웹 클라이언트의 컨텍스트 루트 지정하기 ... 212
5.5.15 애플리케이션 배치하기 ... 213
5.5.16 애플리케이션 클라이언트 실행하기 ... 214
5.5.17 웹 클라이언트 실행하기 ... 214
5.6 세션 빈의 처리 과정 ... 215
5.7 애플리케이션의 수정 ... 216
5.7.1 파일 수정하기 ... 216
5.7.2 파일 추가하기 ... 216
5.7.3 애플리케이션의 배치 정보 변경하기 ... 217
5.8 단원 정리 ... 218
제6장 Stateful Session Bean ... 219
6.1 Stateful Session Bean ... 221
6.2 라이프 사이클 ... 222
6.3 시퀀스 다이어그램 ... 224
6.4 비활성화와 활성화 ... 226
6.5 SessionSynchronization 인터페이스 ... 227
6.6 Stateful Session Bean 예제 ... 227
6.6.1 원격 인터페이스 ... 228
6.6.2 홈 인터페이스 ... 229
6.6.3 세션 빈 클래스 ... 230
6.6.4 Helper 클래스 ... 232
6.6.5 애플리케이션 클라이언트 ... 234
6.6.6 배치하기 ... 237
6.7 isldentical() 메소드 ... 247
6.8 핸들의 사용 ... 249
6.9 세션 빈의 선택 기준 ... 253
6.10 단원 정리 ... 254
제7장 세션 빈에 대한 기타 주제 ... 255
7.1 Environment Entry ... 257
7.2 데이터베이스의 사용 ... 264
7.3 엔터프라이즈 자바 빈의 레퍼런스 전달 ... 285
7.4 타이머 서비스의 사용 ... 286
7.4.1 타이머 생성하기 ... 286
7.4.2 타이머 취소하고 저장하기 ... 287
7.4.3 트랜잭션과 타이머 ... 288
7.4.4 타이머 서비스 예제 ... 288
7.5 단원 정리 ... 293
제8장 세션 빈을 이용한 애플리케이션 개발 ... 295
8.1 실습 데이터 준비 ... 298
8.2 쇼핑몰의 서버측 예제 ... 299
8.2.1 컴포넌트 인터페이스 ... 299
8.2.2 홈 인터페이스 ... 301
8.2.3 세션 빈 클래스 ... 302
8.2.4 상품 정보 저장 클래스 ... 308
8.2.5 사용자 정보 저장 클래스 ... 310
8.3 쇼핑몰의 클라이언트측 예제 ... 312
8.3.1 웹 컴포넌트의 컨트롤러 ... 312
8.3.2 로그인 페이지 ... 315
8.3.3 메인 페이지 ... 316
8.3.4 메뉴 페이지 ... 317
8.3.5 상품 목록 페이지 ... 318
8.3.6 장바구니 페이지 ... 320
8.3.7 장바구니의 상품 목록 페이지 ... 323
8.3.8 장바구니의 상품 구매 페이지 ... 325
8.3.9 구매한 상품 내역 페이지 ... 326
8.4 예제의 패키징 및 배치 ... 327
8.5 예제 실행 ... 332
제9장 엔티티 빈(Entity Bean) ... 335
9.1 엔티티 빈 ... 337
9.1.1 지속성 ... 338
9.1.2 공유 ... 339
9.1.3 기본 키 ... 339
9.1.4 관계성 ... 340
9.2 CMP 엔티티 빈의 라이프 사이클 ... 340
9.3 CMP 엔티티 빈의 시퀀스 다이어그램 ... 343
9.4 CMP 엔티티 빈 ... 346
9.4.1 홈 인터페이스 ... 347
9.4.2 컴포넌트 인터페이스 ... 349
9.4.3 엔티티 빈 클래스 ... 349
9.4.4 기본 키 클래스 ... 349
9.4.5 배치 기술서 ... 349
9.5 EntityBean 인터페이스 ... 352
9.6 CMP를 사용하는 엔티티 빈 예제 ... 358
9.6.1 컴포넌트 인터페이스 ... 358
9.6.2 홈 인터페이스 ... 359
9.6.3 엔티티 빈 클래스 ... 360
9.6.4 애플리케이션 클라이언트 ... 365
9.6.5 패키징 및 배치하기 ... 367
9.7 엔티티 빈의 예외 처리 ... 375
9.8 단원 정리 ... 376
제10장 CMR(Container-Managed Relationship) ... 379
10.1 엔티티 빈과 관계형 데이터베이스 ... 381
10.1.1 지속성 필드와 관계성 필드 ... 383
10.1.2 CMR 필드의 차수 ... 384
10.1.3 CMR 필드의 방향성 ... 385
10.1.4 관계성과 참조 무결성 ... 386
10.2 CMP 2.0을 사용하는 엔티티 빈 예제 ... 387
10.3 RosterApp 애플리케이션 ... 389
10.3.1 등록 명부에 선수 추가하기 ... 389
10.3.2 팀에 선수 추가하기 ... 390
10.3.3 등록 명부에서 선수 삭제하기 ... 392
10.3.4 팀에서 선수 삭제하기 ... 393
10.3.5 팀에 소속된 선수 검색하기 ... 394
10.3.6 팀의 선수 정보 복사하기 ... 396
10.3.7 포지션으로 선수 검색하기 ... 398
10.3.8 선수의 종목 검색하기 ... 400
10.4 PlayerBean 엔티티 빈 ... 402
10.4.1 엔티티 빈 클래스 ... 402
10.4.2 지역 컴포넌트 인터페이스 ... 408
10.4.3 지역 홈 인터페이스 ... 410
10.5 TeamBean 엔티티 빈 ... 413
10.5.1 엔티티 빈 클래스 ... 413
10.5.2 지역 컴포넌트 인터페이스 ... 416
10.5.3 지역 홈 인터페이스 ... 417
10.6 LeagueBean 엔티티 빈 ... 418
10.6.1 엔티티 빈 클래스 ... 418
10.6.2 지역 컴포넌트 인터페이스 ... 421
10.6.3 지역 홈 인터페이스 ... 422
10.7 RosterBean 세션 빈 ... 423
10.7.1 세션 빈 클래스 ... 423
10.7.2 컴포넌트 인터페이스 ... 435
10.7.3 홈 인터페이스 ... 438
10.8 기타 유틸리티 클래스 ... 439
10.8.1 LeagueBean 엔티티 빈을 위한 VO 클래스 ... 439
10.8.2 PlayerBean 엔티티 빈을 위한 VO 클래스 ... 441
10.8.3 TeamBean 엔티티 빈을 위한 VO 클래스 ... 442
10.9 RosterApp 애플리케이션의 클라이언트 ... 443
10.10 RosterApp 애플리케이션의 배치 및 실행 ... 451
10.10.1 테이블 생성하기 ... 451
10.10.2 애플리케이션 패키징 및 배치하기 ... 457
10.10.3 세션 빈 패키징하기 ... 458
10.10.4 엔티티 빈 패키징하기 ... 458
10.10.5 엔티티 빈에 EJB - QL 추가하기 ... 462
10.10.6 엔터프라이즈 자바 빈 간에 관계성 설정하기 ... 464
10.10.7 세션 빈에 트랜잭션 설정하기 ... 467
10.10.8 엔터프라이즈 자바 빈 레퍼런스 지정하기 ... 467
10.10.9 애플리케이션 클라이언트 패키징하기 ... 469
10.10.10 애플리케이션 클라이언트 배치 및 실행하기 ... 471
10.11 단원 정리 ... 472
제11장 EJB - QL(Enterprise Java Beans Query Language) ... 473
11.1 EJB - QL 문법 1 ... 476
11.2 EJB - QL 예제 ... 477
11.2.1 Finder 메소드 ... 477
11.2.2 관계성 필드를 사용하는 EJB - QL ... 478
11.2.3 다른 조건식을 사용하는 Finder 메소드 ... 480
11.2.4 Select 메소드 ... 482
11.3 EJB - QL 문법 2 ... 483
11.3.1 BNF 기호 ... 483
11.3.2 BNF 문법 ... 484
11.3.3 FROM 절 ... 491
11.3.4 WHERE 절 ... 496
11.3.5 SELECT 절 ... 502
11.3.6 ORDER BY 절 ... 505
11.4 EJB - QL의 한계 ... 506
11.5 단원 정리 ... 506
제12장 BMP 엔티티 빈(Bean-Managed Persistence) ... 509
12.1 BMP 엔티티 빈의 구성 요소 ... 511
12.1.1 AircraftApp 애플리케이션의 원격 인터페이스 ... 513
12.1.2 AircraftApp 애플리케이션의 홈 인터페이스 ... 514
12.1.3 AircraftApp 애플리케이션의 엔티티 빈 클래스 ... 515
12.1.4 AircraftApp 애플리케이션의 클라이언트 클래스 ... 526
12.1.5 AircraftApp 애플리케이션의 패키징 및 배치 ... 528
12.2 개선된 BMP ... 530
12.3 BMP를 사용하는 엔티티 빈 예제 ... 532
12.3.1 Address 엔티티 빈 ... 534
12.3.2 Customer 엔티티 빈 ... 538
12.3.3 CustomerProgRefresh 엔티티 빈 ... 542
12.3.4 CustomerRefresh 엔티티 빈 ... 546
12.3.5 CustomerTransactional 엔티티 빈 ... 550
12.3.6 클라이언트 예제 ... 553
12.3.7 패키징 및 배치하기 ... 563
12.3.8 예제 실행 ... 564
12.4 단원 정리 ... 566
제13장 JMS API(Java Message Service API) ... 567
13.1 메시징 서비스 ... 569
13.1.1 메시징 ... 569
13.1.2 JMS API ... 570
13.2 JMS API ... 572
13.3 JMS API의 기본 개념 ... 573
13.3.1 JMS API의 구조 ... 573
13.3.2 메시징 도메인 ... 574
13.3.3 Point - to - Point 메시징 도메인 ... 574
13.3.4 Publish/Subscribe 메시징 도메인 ... 575
13.3.5 공통 인터페이스 ... 576
13.3.6 메시지의 소비 ... 576
13.4 JMS API로 구현된 애플리케이션의 구성 ... 577
13.4.1 관리 객체 ... 577
13.4.2 커넥션 ... 579
13.4.3 세션 ... 580
13.4.4 메시지 생산자 ... 581
13.4.5 메시지 소비자 ... 581
13.4.6 메시지 ... 584
13.4.7 예외 처리 ... 587
13.5 JMS 클라이언트의 작성 ... 587
13.5.1 동기식으로 전달되는 메시지 ... 587
13.5.2 관리 객체 등록하기 ... 593
13.5.3 클라이언트 패키징하기 ... 600
13.5.4 클라이언트 실행하기 ... 603
13.5.5 비동기식으로 전달되는 메시지 ... 605
13.5.6 SimpleAsynchConsumer 클라이언트 패키징 ... 610
13.5.7 SimpleAsynchConsumer 클라이언트 실행 ... 610
13.6 단원 정리 ... 612
제14장 메시지 드리븐 빈(Message Driven Bean) ... 615
14.1 메시지 드리븐 빈 ... 617
14.1.1 메시지 드리븐 빈의 빈 클래스 ... 618
14.1.2 메시지 드리븐 빈의 분산 트랜잭션 관리하기 ... 620
14.2 메시지 드리븐 빈 예제 ... 622
14.2.1 클라이언트와 애플리케이션 구현하기 ... 623
14.2.2 관리 객체 생성하기 ... 628
14.2.3 애플리케이션 배치하기 ... 631
14.2.4 클라이언트 실행하기 ... 637
14.3 단원 정리 ... 639
제15장 트랜잭션(Transaction) ... 641
15.1 트랜잭션 ... 643
15.2 CMT ... 644
15.2.1 트랜잭션의 속성 ... 644
15.2.2 CMT에서의 롤백 ... 648
15.2.3 세션 빈에서의 인스턴스 동기화 ... 650
15.2.4 BankBean 예제 ... 651
15.2.5 BankBean 예제 실행하기 ... 664
15.2.6 CMT에서 지원하지 않는 메소드 ... 667
15.3 BMT ... 668
15.3.1 JDBC API 트랜잭션 사용하기 ... 669
15.3.2 WarehoseBean 예제 ... 670
15.3.3 WarehouseBean 예제 실행하기 ... 680
15.3.4 JTA 트랜잭션 사용하기 ... 682
15.3.5 TellerBean ... 683
15.3.6 TellerBean 예제 실행하기 ... 694
15.4 트랜잭션 타임아웃 ... 697
15.5 고립성 레벨 ... 698
15.6 멀티 데이터베이스에서의 업데이트 ... 698
15.7 웹 컴포넌트의 트랜잭션 ... 700
15.8 단원 정리 ... 701
제16장 리소스 커넥션(Resource Connection) ... 703
16.1 JNDI 네이밍 ... 705
16.2 DataSource 객체와 커넥션 풀 ... 706
16.3 데이터베이스 커넥션 ... 708
16.3.1 데이터베이스 커넥션 작성하기 ... 708
16.3.2 리소스 레펀런스 지정하기 ... 725
16.3.3 데이터 소스 생성하기 ... 726
16.4 메일 세션 커넥션 ... 728
16.4.1 ConfirmerBean 예제 작성하기 ... 729
16.4.2 메일 세션 생성하기 ... 734
16.4.3 ConfirmerBean의 패키징 및 배치하기 ... 736
16.4.4 클라이언트 실행하기 ... 738
16.5 URL 커넥션 ... 739
16.5.1 HTMLReaderBean 예제 작성하기 ... 739
16.5.2 HTMLReaderBean의 패키징 및 배치하기 ... 745
16.5.3 클라이언트 실행하기 ... 746
16.6 단원 정리 ... 747
제17장 보안(Security) ... 749
17.1 보안의 개요 ... 751
17.2 보안 요구 사항 ... 755
17.2.1 보안 역할 ... 755
17.2.2 메소드 인가 ... 757
17.3 프로그래밍에 의한 접근 제어 ... 759
17.4 보안 컨텍스트의 전이 ... 762
17.5 보안 예제 ... 763
17.5.1 선언적 권한 관리를 사용하는 예제 ... 763
17.5.2 Run As 속성을 사용하는 예제 ... 777
17.6 단원 정리 ... 784
제18장 EJB와 웹 서비스(Web Service) ... 785
18.1 웹 서비스의 구조 ... 788
18.1.1 웹 서비스의 표준안 ... 789
18.1.2 SOAP ... 790
18.1.3 WSDL ... 792
18.1.4 UDDI ... 793
18.2 JAX - RPC ... 795
18.2.1 JAX - RPC를 이용한 웹 서비스 예제 ... 796
18.2.2 JSX - RPC를 사용하는 웹 서비스 클라이언트 예제 ... 809
18.3 단원 정리 ... 818
제19장 EJB 디자인 전략 ... 819
19.1 컴포넌트 기반의 구조 ... 821
19.2 EJB의 장ㆍ단점 ... 824
19.3 EJB 디자인시 고려 사항 ... 826
19.3.1 엔티티 빈과 세션 빈의 선택 ... 826
19.3.2 Stateful/Stateless Session Bean의 선택 ... 826
19.3.3 BMP와 CMP의 선택 ... 827
19.3.4 원격 인터페이스와 지역 인터페이스의 선택 ... 827
19.4 EJB 디자인 패턴 ... 828
19.4.1 Business Delegate 패턴 ... 830
19.4.2 Data Access Object 디자인 패턴 ... 833
19.4.3 Fast Lane Reader 디자인 패턴 ... 837
19.4.4 Front Controller 디자인 패턴 ... 838
19.4.5 Page - by - Page Iterator 디자인 패턴 ... 840
19.4.5 Session Facade 디자인 패턴 ... 841
19.4.7 Value Object 디자인 패턴 ... 849
19.5 단원 정리 ... 853
제20장 스트럿츠와 EJB 연동 ... 855
20.l 웹 애플리케이션 ... 857
20.2 웹 애플리케이션의 개발 패턴 ... 859
20.2.1 Model 1 구조 ... 859
20.2.2 Model 2 구조 ... 860
20.3 스트럿츠와 EJB 연동 ... 862
20.3.1 스트럿츠 설치하기 ... 862
20.3.2 JBoss 설치하기 ... 864
20.3.3 Eclipse 설정하기 ... 867
20.3.4 스트럿츠 실행하기 ... 869
20.3.5 웹 애플리케이션 추가하기 ... 872
20.3.6 EJB 생성하기 ... 878
20.3.7 Session Facade 클래스 ... 882
20.4 XDoclet의 사용 ... 884
20.4.1 EJB 배치하기 ... 884
20.4.2 Merge 디렉토리 생성하기 ... 887
20.4.3 웹 컴포넌트 배치하기 ... 890
20.5 패키징과 배치 ... 892
20.5.1 EJB.jar 파일 생성하기 ... 892
20.5.2 EJB - client.jar 파일 생성하기 ... 894
20.5.3 웹 컴포넌트(.war) 파일 생성하기 ... 895
20.5.4 애플리케이션(.ear) 파일 생성하기 ... 897
20.5.5 애플리케이션 배치하기 ... 899
20.6 단원 정리 ... 902
더보기 닫기