OSGi實戰

dle1846.2.1 dle2819.3.1 dle37413.2.5

內容介紹

《 OSGi實戰》是學習OSGi的全面指導,利用與架構和開發人員相關的示例清楚地講解OSGi概念,同時探討了很多實踐場景和技術,闡述了開發人員有多需要OSGi,怎么將OSGi嵌入其他容器中,將遺留系統移入OSGi的最佳實踐,等等。
《OSGi實戰》面向OSGi規範的使用者,系統、全面、深入地闡述OSGi的重要特性及其使用方法,還介紹了某些技術的低層實現細節,引領讀者暢遊OSGi的世界。

作者介紹

Richard S. Hall是Apache Felix框架開發組重要成員。2000年以後Richard參與了OSGi的開源工作並於2004年加入OSGi聯盟。Richard還是Apache軟體組織成員,目前在Oracle的GlassFish項目組工作,幫助解決OSGi的相關問題。
Karl Pauls是Apache Felix Framework Security Provider項目的實現者,Apache Felix框架開發組的核心成員。Karl還是Apache軟體組織成員,參與開發過多個Apache項目以及其他的開源項目。目前Karl是Luminis的一位研究員。

作品目錄

目    錄
第一部分  OSGi:模組化、生命周期和服務
第1章  揭開OSGi的面紗2
1.1  OSGi的定義和目標3
1.1.1  Java模組化的不足3
1.1.2  OSGi能幫助你嗎6
1.2  OSGi架構概覽6
1.2.1  OSGi框架7
1.2.2  將它們結合起來10
1.3  Hello, world!10
1.3.1  模組層示例10
1.3.2  生命周期層示例12
1.3.3  服務層示例13
1.3.4  場景設定15
1.4  OSGi的相關技術16
1.4.1  Java EE16
1.4.2  Jini17
1.4.3  NetBeans17
1.4.4  JMX17
1.4.5  輕量級容器18
1.4.6  Java 業務集成18
1.4.7  JSR 27719
1.4.8  JSR 29419
1.4.9  SCA19
1.4.10  .NET20
1.5  小結20
第2章  精通模組化21
2.1  什麼是模組化21
2.2  為什麼使用模組化24
2.3  模組化繪圖程式24
2.4  bundle27
2.4.1  bundle在物理模組化中扮演的角色28
2.4.2  bundle在邏輯模組化中扮演的角色29
2.5  使用元數據定義bundle30
2.5.1  可讀信息31
2.5.2  bundle標識32
2.5.3  代碼可見性34
2.5.4  類搜尋順序42
2.6  完成繪圖程式設計43
2.6.1  提高繪圖程式的模組化44
2.6.2  啟動新的繪圖程式46
2.7  OSGi依賴解析46
2.7.1  自動解析依賴47
2.7.2  使用約束保證一致性51
2.8  回顧模組化繪圖程式的好處56
2.9  小結59
第3章  生命周期60
3.1  生命周期管理60
3.1.1  什麼是生命周期管理61
3.1.2  為什麼需要生命周期管理62
3.2  OSGi bundle的生命周期63
3.2.1  將生命周期引入繪圖程式63
3.2.2  OSGi框架在生命周期中的作用65
3.2.3  bundles激活器的清單檔案條目66
3.2.4  生命周期API67
3.2.5  生命周期狀態圖72
3.2.6  bundle快取和框架重啟73
3.3  在bundle中使用生命周期API74
3.3.1  配置bundle75
3.3.2  部署bundle76
3.3.3  檢查框架狀態81
3.3.4  持久化bundle狀態82
3.3.5  事件監聽85
3.3.6  bundle自我銷毀87
3.4  動態擴展繪圖程式89
3.5  生命周期與模組化96
3.5.1  解析bundle96
3.5.2  刷新bundle98
3.5.3  當更新操作沒有完成更新101
3.6  小結103
第4章  學習服務104
4.1  什麼是服務、為什麼使用服務、什麼時候用服務104
4.1.1  什麼是服務104
4.1.2  為什麼使用服務106
4.1.3  什麼時候應該使用服務109
4.1.4  什麼時候不應該使用服務110
4.1.5  仍然不確定110
4.2  OSGi服務實戰111
4.2.1  發布服務112
4.2.2  查找並綁定服務114
4.3  處理動態性117
4.3.1  避免常見的陷阱118
4.3.2  監聽服務121
4.3.3  服務跟蹤126
4.4  在繪圖示例中使用服務129
4.4.1  定義圖形服務129
4.4.2  發布圖形服務129
4.4.3  跟蹤圖形服務130
4.5  將服務關聯到模組層和生命周期層131
4.5.1  為什麼不能看到我的服務131
4.5.2  能否提供一個bundle特有的服務132
4.5.3  應該在何時釋放服務133
4.5.4  何時註銷服務133
4.5.5  應該將接口分開打包嗎133
4.6  標準服務134
4.6.1  核心服務134
4.6.2  compendium服務135
4.7  小結136
第5章  深入分析模組化特性138
5.1  管理導出138
5.1.1  導入導出包139
5.1.2  隱式導出屬性142
5.1.3  強制導出屬性143
5.1.4  導出過濾145
5.1.5  複製導出146
5.2  導入解耦147
5.2.1  可選導入147
5.2.2  動態導入148
5.2.3  可選導入與動態導入的比較149
5.2.4  日誌示例150
5.3  需要的bundle153
5.3.1  聲明bundle依賴關係154
5.3.2  聚合分割包155
5.3.3  bundle依賴的相關問題158
5.4  將bundle劃分為片段158
5.4.1  片段159
5.4.2  本地化中使用片段161
5.5  處理與環境相關的問題164
5.5.1  依賴執行環境165
5.5.2  構建本地庫166
5.6  小結168
第二部分  OSGi實踐
第6章  走近bundle170
6.1  將JAR轉換成bundle170
6.1.1  選取bundle標識171
6.1.2  導出包173
6.1.3  發現需要導入的包177
6.1.4  嵌入與導入181
6.1.5  增加對生命周期的支持181
6.1.6  JAR檔案轉換為bundle的簡要說明183
6.2  分割一個套用到多個bundle184
6.2.1  創建一個大型bundle184
6.2.2  將代碼拆分到多個bundle中193
6.2.3  降低模組耦合197
6.2.4  是否要轉換成bundle201
6.3  小結204
第7章  測試應用程式206
7.1  遷移測試到OSGi206
7.1.1  容器內測試207
7.1.2  創建測試bundle208
7.1.3  覆蓋所有基礎210
7.2  模擬OSGi212
7.2.1  測試期望的行為213
7.2.2  模擬實戰214
7.2.3  模擬意外情景215
7.2.4  處理多執行緒測試216
7.2.5  暴露競態條件218
7.3  OSGi高級測試219
7.3.1  OSGi測試工具220
7.3.2  在多個框架中運行測試221
7.3.3  單元測試225
7.3.4  集成測試226
7.3.5  管理測試228
7.4  小結230
第8章  調試套用232
8.1  調試bundle232
8.1.1  調試實戰234
8.1.2  使用HotSwap解決問題239
8.2  解決類載入相關問題243
8.2.1  ClassNotFoundException與NoClassDefFoundError244
8.2.2  類型轉換問題246
8.2.3  使用uses約束247
8.2.4  同Class.forName()劃清界限249
8.2.5  執行緒上下文類載入器252
8.3  追蹤記憶體泄漏254
8.4  懸掛服務258
8.4.1  查找懸掛服務259
8.4.2  防止懸掛服務259
8.5  小結261
第9章  管理bundle262
9.1  包和bundle的版本控制262
9.1.1  有效的版本控制263
9.1.2  包的版本控制264
9.1.3  bundle的版本控制266
9.2  配置bundle267
9.2.1  配置管理服務268
9.2.2  元類型服務276
9.2.3  首選項服務279
9.3  延遲啟動bundle281
9.3.1  激活策略281
9.3.2  使用激活策略283
9.4  小結284
第10章  管理套用285
10.1  部署bundle285
10.1.1  管理代理285
10.1.2  OSGi bundle倉庫287
10.1.3  部署管理服務294
10.2  指定bundle激活順序301
10.2.1  介紹啟動級別服務302
10.2.2  使用啟動級別服務303
10.3  小結306
第三部分  高級主題
第11章  組件模型和框架308
11.1  面向組件308
11.1.1  什麼是組件309
11.1.2  為什麼需要組件310
11.2  OSGi與組件311
11.2.1  OSGi面向服務的組件模型311
11.2.2  改進OSGi組件模型312
11.2.3  使用組件的繪圖示例316
11.3  聲明式服務316
11.3.1  構建聲明式服務組件317
11.3.2  使用聲明式服務提供服務318
11.3.3  利用聲明式服務使用服務319
11.3.4  聲明式服務組件生命周期324
11.4  小結330
第12章  高級組件框架331
12.1  Blueprint容器331
12.1.1  Blueprint架構332
12.1.2  用Blueprint提供服務332
12.1.3  通過Blueprint使用服務335
12.1.4  Blueprint組件生命周期339
12.1.5  Blueprint高級特性343
12.2  Apache Felix iPOJO347
12.2.1  構建iPOJO組件348
12.2.2  通過iPOJO提供服務349
12.2.3  通過iPOJO使用服務350
12.2.4  iPOJO組件生命周期355
12.2.5  使用iPOJO實例化組件358
12.3  混合和匹配362
12.4  小結364
第13章  啟動和嵌入OSGi框架365
13.1  標準啟動和嵌入365
13.1.1  框架API概覽366
13.1.2  創建框架實例367
13.1.3  配置框架369
13.1.4  啟動框架實例370
13.1.5  停止框架實例371
13.2  啟動框架372
13.2.1  確定安裝哪些bundle373
13.2.2  乾淨地關閉373
13.2.3  配置、創建和啟動框架374
13.2.4  安裝bundle374
13.2.5  啟動bundle375
13.2.6  啟動主bundle375
13.2.7  等待關閉376
13.3  嵌入框架377
13.3.1  內部還是外部378
13.3.2  誰在控制380
13.3.3  嵌入式框架示例381
13.4  小結386
第14章  確保應用程式的安全388
14.1  使用安全或者不使用安全388
14.2  安全:努力嘗試使用390
14.3  OSGi特定的許可權393
14.3.1  PackagePermission393
14.3.2  BundlePermission394
14.3.3  AdminPermission395
14.3.4  ServicePermission396
14.3.5  相對檔案許可權397
14.4  使用條件許可權管理服務管理許可權397
14.4.1  條件許可權397
14.4.2  條件許可權管理服務398
14.4.3  bundle 位置條件400
14.4.4  使用Conditional- Permission Admin400
14.4.5  實現一個策略檔案讀取器404
14.5  數字簽名的bundle405
14.5.1  學習術語406
14.5.2  創建證書和簽名bundle406
14.5.3  BundleSignerCondition408
14.6  本地許可權410
14.7  高級許可權管理411
14.7.1  自定義條件概覽411
14.7.2  基於日期的條件412
14.7.3  用戶輸入條件414
14.8  匯總417
14.9  小結421
第15章  Web套用和Web服務422
15.1  創建Web套用422
15.1.1  使用HTTP服務規範424
15.1.2  使用Web套用規範432
15.1.3  標準WAR:Web URL處理程式436
15.2  提供和使用Web服務437
15.2.1  提供一個Web服務438
15.2.2  使用Web服務441
15.2.3  發布服務445
15.3  小結452
附錄A  構建 bundle453
附錄B  OSGi標準服務466

相關詞條

相關搜尋

熱門詞條

聯絡我們