內容簡介
本書是關於ejb 3.0的專業技術教程,專注於ejb的概念、方法、開發過程的介紹。同時,本書還研究許多高端的ejb知識,使得開發者能夠真正理解和掌握ejb,實踐出真知。通過閱讀此書,開發者將精通ejb。.
全書共分為4個部分:第一部分對ejb編程基礎進行介紹,概要性地對ejb進行了闡述;第二部分重點關注ejb編程的具體內容和過程,向開發者展示了如何使用會話bean、將會話bean發布為web服務、訊息驅動bean;第三部分專注於高級ejb專題;第四部分是附錄,收集了ejb組件技術相關的其他內容。..
本書適合作為java程式設計師、網站開發人員和系統分析員的參考書
作者
羅時飛,獨立Java EE顧問。西安交通大學碩士。從事JavaEE開發、架構工作7年多,曾擔任大型軟體公司產品開發經理,實踐經驗豐富。對Java EE平台、敏捷方法及開源技術有深入研究,出版圖書多本。現在,他依託網站專職從事企業級Java的推廣工作。.其近期代表作品有:《精通EJB3.0》(第4版,譯) 《精通Spring》(簡、繁體版,第1版,編著)。
目錄
第1篇 總述.
第1章 概述 3
1.1 ejb前奏 4
1.1.1 軟體組件 4
1.1.2 呼喚組件化 4
1.2 分散式套用的中間件需求 5
1.2.1 套用伺服器級軟體 7
1.2.2 標準化組件框架 7
1.3 企業bean技術 8
1.3.1 鍾情java 9
1.3.2 業務層組件—ejb 10
1.3.3 分散式計算:ejb的支撐 11
1.3.4 ejb中間件服務 13
1.3.5 ejb套用生命周期中的角色 14
1.3.6 ejb生態圈 17
1.4 面向服務架構及ejb 19
1.5 終極無間—可重用服務 20
1.6 java ee 5.0 22
1.7 小結 26
第2章 傳統的ejb 27
.2.1 傳統ejb組件的具體構成 27
2.2 開發與部署傳統ejb組件 29
2.2.1 遠程接口 31
2.2.2 本地接口 31
2.2.3 home接口 32
2.2.4 本地home接口 33
2.2.5 bean類 34
2.2.6 部署描述符 35
2.2.7 部署企業bean組件 35
2.2.8 helloworldejb客戶 36
2.3 剖析ejb 2.x 38
2.3.1 複雜性—ejb 2.x的突出問題 38
2.3.2 如何改進ejb 2.x 41
2.4 小結 42
第3章 新一代ejb 43
3.1 介紹ejb 3.0 43
3.1.1 ejb容器 44
3.1.2 ejb組件類型 46
3.1.3 ejb使用的rmi-iiop 48
3.1.4 ejb與位置透明性 49
3.1.5 ejb環境 50
3.1.6 剖析ejb 3.0 51
3.1.7 home與對象接口的作用 54
3.2 簡化的ejb 3.0 api 55
3.2.1 消除home與對象接口 55
3.2.2 消除組件接口 55
3.2.3 使用注釋 56
3.2.4 簡化對環境的訪問 59
3.3 打包並部署ejb 3.0組件 60
3.4 ejb 3.0組件實例 61
3.4.1 業務接口 62
3.4.2 bean類 62
3.4.3 部署描述符 63
3.4.4 ejb客戶 63
3.5 術語集合 64
3.6 小結 65
第2篇 ejb組件和實體
第4章 會話bean介紹 69
4.1 會話bean的生命周期 69
4.2 會話bean的子類型 70
4.2.1 無狀態會話bean 70
4.2.2 有狀態會話bean 71
4.3 有狀態會話bean的不同點 72
4.3.1 實現實例池功能 72
4.3.2 維護會話狀態的規則 73
4.3.3 激活和掛起回調 74
4.3.4 回調方法小結 77
4.3.5 一個簡單的有狀態會話bean組件 77
4.3.6 會話bean的生命周期流程圖 86
4.4 小結 89
第5章 將會話bean發布為web服務 91
5.1 web服務概念 91
5.1.1 web服務標準 93
5.1.2 xml文檔和平台無關性 96
5.2 實現web服務 97
5.2.1 wsdl和xml/java映射 99
5.2.2 打包和部署暴露web服務的會話bean 100
5.3 實現web服務客戶 101
5.4 小結 102
第6章 java持久化api 103
6.1 對象關係映射 104
6.2 何為實體 106
6.2.1 實體與會話bean 107
6.2.2 持久化提供者 107
6.2.3 實體類 108
6.2.4 訪問持久化上下文中的實體 110
6.2.5 打包和部署實體類 114
6.3 entitymanager api 115
6.3.1 實體的生命周期 116
6.3.2 資料庫同步 119
6.4 小結 125
第7章 訊息驅動bean介紹 127
7.1 使用訊息的動機 127
7.2 java訊息服務 129
7.2.1 訊息域 130
7.2.2 jms api 131
7.3 集成jms和ejb 134
7.4 開發訊息驅動bean 138
7.4.1 語義 138
7.4.2 一個簡單實例 140
7.5 高級概念 145
7.5.1 事務 145
7.5.2 安全性 145
7.5.3 負載均衡 145
7.5.4 群集中訊息的重複消費 146
7.6 基於jms的訊息驅動bean陷阱 147
7.6.1 訊息順序 148
7.6.2 錯過調用@predestroy 148
7.6.3 壞訊息 148
7.6.4 如何將結果返回給訊息生產者 151
7.6.5 異步方法調用 154
7.7 小結 155
第8章 擴充ejb組件的功能 157
8.1 從ejb組件調用其他ejb組件 157
8.2 annotation 159
8.2.1 公用注釋 159
8.2.2 業務接口注釋 160
8.2.3 用於有狀態會話bean的注釋 161
8.2.4 依賴注入 164
8.2.5 攔截器 167
8.3 小結 172
第3篇 高級ejb概念
第9章 高級持久化概念 175
9.1 繼承 176
9.1.1 各類繼承結構使用單個表 179
9.1.2 各子類使用單獨的表 184
9.1.3 各具體實體類使用單個表 186
9.1.4 其他繼承模式 186
9.2 多態 188
9.3 關係 190
9.3.1 關係類型 190
9.3.2 1:1關係 191
9.3.3 1:n關係 196
9.3.4 m:n關係 204
9.4 改進的ejb-ql 210
9.4.1 批量更新和刪除 211
9.4.2 連線操作 214
9.4.3 group by和having從句 214
9.4.4 投影 215
9.4.5 高級查詢操作 216
9.4.6 在select從句中構造對象 217
9.5 小結 218
第10章 事務 219
10.1 使用事務的動機 219
10.1.1 原子操作 220
10.1.2 網路或機器故障 221
10.1.3 多用戶共享數據 221
10.2 事務帶來的優勢 222
10.3 事務模型 224
10.3.1 平面事務 225
10.3.2 嵌入式事務 226
10.3.3 其他事務模型 227
10.4 分散式事務 227
10.4.1 持久性和2pc協定 228
10.4.2 事務通信協定和事務上下文 229
10.5 java事務服務和java事務api 230
10.5.1 ots和java事務服務 230
10.5.2 java事務api 230
10.5.3 jts和跨套用伺服器的分散式事務互操作 231
10.6 ejb事務 232
10.6.1 底層事務系統抽象 232
10.6.2 容器管理、bean管理及客戶控制的事務 232
10.6.3 選擇事務風格 235
10.7 容器管理事務 236
10.7.1 ejb事務屬性的取值 236
10.7.2 容器管理事務實例 239
10.7.3 套用事務屬性到各種ejb組件中.. 241
10.8 bean管理事務 243
10.8.1 javax.transaction.usertransaction接口 243
10.8.2 bean管理事務實例 245
10.9 客戶控制的事務 246
10.10 事務隔離 247
10.10.1 並發控制的必要性 247
10.10.2 隔離級別 248
10.10.3 髒讀問題 249
10.10.4 不可重複讀和可重複度 250
10.10.5 幻影讀問題 251
10.10.6 事務隔離小結 251
10.10.7 在ejb套用中使用各種隔離級別 251
10.10.8 悲觀和樂觀並發控制 252
10.11 設計ejb中的事務會話 253
10.12 小結 255
第11章 安全性 257
11.1 介紹 257
11.1.1 侵害、弱點和風險 258
11.1.2 控制 259
11.2 web套用的安全性 260
11.2.1 web套用的認證 261
11.2.2 授權 262
11.2.3 機密性和集成性 263
11.3 理解ejb安全性 263
11.3.1 ejb套用的認證 263
11.3.2 ejb中的授權 273
11.3.3 安全性傳播 283
11.4 安全性互操作 284
11.4.1 基於ssl的iiop 284
11.4.2 csiv2 285
11.5 web服務中的安全性 286
11.5.1 端對端的安全性 287
11.5.2 xml數字簽名和xml加密 288
11.5.3 saml 290
11.5.4 ws-security 291
11.6 小結 293
第12章 ejb定時器 295
12.1 任務調度 295
12.2 ejb和任務調度 296
12.3 ejb定時器服務 297
12.3.1 定時器服務api 297
12.3.2 ejb同定時器服務的互動 300
12.4 定時器實例——cleandaylimitordersbean 301
12.4.1 cleandaylimitorders業務接口 301
12.4.2 cleandaylimitordersbean類 302
12.4.3 cleandaylimitorders ejb的部署描述符 304
12.4.4 cleandaylimitorders ejb的客戶 305
12.4.5 運行客戶 305
12.5 ejb定時器服務的優缺點 306
12.6 小結 307
第13章 ejb最佳實踐 309
13.1 何時使用ejb 309
13.2 如何選用同ejb協同工作的web套用框架 311
13.3 在ejb項目中實施mdd 313
13.4 在ejb項目中實施極限編程 314
13.5 測試ejb 316
13.5.1 ejb單元測試 316
13.5.2 藉助於框架完成ejb的單元測試 317
13.6 如何在ejb中實現客戶端回調功能 319
13.6.1 jms 319
13.6.2 遠程對象調用 319
13.6.3 web服務 320
13.7 選用servlet或無狀態會話bean作為服務端點 320
13.8 在ejb項目中考慮使用aop技術 321
13.8.1 aop 321
13.8.2 何時在ejb套用中使用aop 321
13.9 反射、動態代理和ejb 322
13.10 將ejb部署到不同java ee套用伺服器 323
13.11 調試ejb 324
13.12 ejb中的繼承和代碼復用 326
13.13 在ejb中實現單例(singleton) 327
13.14 何時在ejb中使用xml 327
13.15 選擇訊息或rmi-iiop的時機 328
13.16 小結 330
第14章 ejb性能調優 331
14.1 提前關注 331
14.2 從性能角度看待:有狀態對無狀態 332
14.3 如何藉助於容量規劃來保證回響時間 334
14.4 使用會話外觀改善性能 335
14.5 選擇本地接口還是遠程接口 336
14.6 區分資源 337
14.7 無狀態會話bean調優 338
14.8 有狀態會話bean調優 339
14.9 實體調優 340
14.10 mdb調優 342
14.11 java虛擬機調優 343
14.12 其他調優技巧 344
14.13 正確選用ejb伺服器 345
14.14 小結 346
第15章 ejb集成 347
15.1 研究集成的必要性 347
15.2 ejb和集成 348
15.3 java ee連線器架構 349
15.3.1 引入java ee連線器的理由 349
15.3.2 資源適配器同java ee組件互動 351
15.3.3 資源適配器同套用伺服器互動 352
15.4 java ee連線器api 354
15.4.1 javax.resource包 354
15.4.2 javax.resource.cci包 354
15.4.3 javax.resource.spi包 356
15.4.4 javax.resource.spi.endpoint包 358
15.4.5 javax.resource.spi.security包 358
15.4.6 javax.resource.spi.work包 359
15.5 系統契約 359
15.5.1 生命周期管理 359
15.5.2 連線管理 360
15.5.3 安全性管理 363
15.5.4 事務管理 365
15.5.5 工作管理 368
15.5.6 外來訊息管理 369
15.6 連線器實例:outboundloanra 371
15.6.1 實例架構 371
15.6.2 javaloanapp.java 372
15.6.3 loadapp.dll 373
15.6.4 outboundloanra 374
15.6.5 loanratesejb 396
15.6.6 loanratesclient 398
15.6.7 運行客戶 398
15.6.8 擴展outboundloanra 403
15.7 集成最佳實踐:使用合適的技術 404
15.7.1 何時使用jms和基於jms的mdb 404
15.7.2 何時使用java ee連線器 404
15.7.3 何時使用java web服務 404
15.8 小結 405
第16章 群集 407
16.1 大型系統概述 407
16.1.1 何為大型系統 408
16.1.2 負載均衡和容錯 410
16.1.3 基於並排或分散式java ee容器實施群集 413
16.2 裝備群集ejb 415
16.2.1 如何群集ejb 415
16.2.2 冪等性概念 416
16.2.3 群集無狀態會話bean 417
16.2.4 群集有狀態會話bean 419
16.2.5 群集實體 420
16.2.6 群集mdb 422
16.3 其他ejb群集問題 423
16.3.1 初次接觸 423
16.3.2 初始訪問邏輯 424
16.4 小結 424
第17章 ejb-java ee集成——構建完整的套用 425
17.1 業務問題 425
17.2 預覽最終網站 426
17.3 圈定技術需求 429
17.3.1 業務邏輯層 430
17.3.2 前端展示層 435
17.4 實例代碼 440
17.5 小結 450
附錄a rmi-iiop和jndi教程 451
a.1 java rmi-iiop 451
a.1.1 遠程方法調用 452
a.1.2 遠程接口 454
a.1.3 遠程對象實現 455
a.1.4 存根和骨架 456
a.2 對象序列化和參數傳遞 457
a.2.1 傳值 457
a.2.2 corba與rmi-iiop的互操作 462
a.3 java命名和目錄接口 463
a.3.1 為什麼要使用jndi 464
a.3.2 命名和目錄服務 464
a.3.3 命名和目錄存在的問題 466
a.3.4 進入jndi 466
a.3.5 jndi的優勢 466
a.3.6 jndi架構 467
a.3.7 jndi概念 468
a.3.8 jndi編程 471
a.4 集成rmi-iiop和jndi 472
a.4.1 將rmi-iiop伺服器綁定到jndi 473
a.4.2 藉助於jndi查找rmi-iiop伺服器 474
a.5 小結 475
附錄b 注釋 477
b.1 annotation介紹 477
b.1.1 用於ejb的注釋 479
b.1.2 背景 480
b.2 ejb注釋參考 482
b.2.1 用於ejb組件類型的注釋 482
b.2.2 用於會話bean和訊息驅動bean的公共注釋 484
b.2.3 用於實體的注釋 487
b.3 小結... 500