出版時間:2013-2-25 出版社:周志明、 謝小明 機械工業(yè)出版社 (2013-02出版) 作者:周志明,謝小明
Tag標簽:無
前言
前言為什么寫這本書隨著軟件規(guī)模的日益增大,程序按模塊拆分、按模塊開發(fā)和按模塊部署等需求變得越來越迫切,“模塊化”成為了Java社區(qū)中最熱門的話題之一。而OSGi技術(shù)—Java業(yè)界事實上的模塊化標準,也被越來越多的中間件、第三方類庫和各類應(yīng)用程序所認可和采用。與此相對的是,有關(guān)OSGi技術(shù)的資料,尤其是中文的資料卻顯得異常的貧乏。筆者自2007年接觸OSGi以來,曾在數(shù)個大型系統(tǒng)中使用過OSGi作為軟件的基礎(chǔ)架構(gòu),這一方面使筆者深刻感受到了OSGi帶來的諸多好處以及OSGi設(shè)計思想的魅力;另一方面也使筆者注意到OSGi的入門門檻相對較高,如果沒有足夠的指導(dǎo)材料,開發(fā)人員從零開始學習并探索出OSGi的最佳實踐需要很高的成本。因此,筆者就萌生了寫一本關(guān)于OSGi原理、應(yīng)用與最佳實踐的中文書籍的想法。自從1999年OSGi聯(lián)盟成立以來,OSGi技術(shù)隨著Java一起飛速發(fā)展,現(xiàn)已經(jīng)成為一種被廣泛認可的軟件架構(gòu)技術(shù)和方法。OSGi聯(lián)盟的成員數(shù)量也已經(jīng)從最開始的幾個增長到目前超過100個,許多世界著名的IT企業(yè)都加入到OSGi的陣營之中,如Adobe、IBM、Oracle、SAP、RedHat和Siemens等。這些軟件廠商推出的許多產(chǎn)品都支持OSGi技術(shù),甚至產(chǎn)品本身就使用了OSGi技術(shù)構(gòu)建,例如IBM的WebSphere、Lotus和JAZZ,Oracle的GlassFish和Weblogic,RedHat的JBoss,Eclipse基金會的Eclipse IDE、Equinox及之下的眾多子項目,Apache基金會的Karaf、Aries、Geronimo、Felix及之下的眾多子項目等。這些業(yè)界巨頭的踴躍參與,從側(cè)面證明了OSGi技術(shù)有著非常廣闊的市場前景。OSGi能獲得如此廣泛的認可,一方面是它的誕生迎合了軟件模塊化的需求;另一方面是因為它足夠全面和開放,OSGi所具有的動態(tài)性、伸縮性正好是許多生產(chǎn)系統(tǒng)所需的?;贠SGi的程序更新升級或者缺陷修復(fù),能夠像電腦更換USB接口的鼠標鍵盤或者插拔其他USB設(shè)備那樣可以即插即用,無須重啟,甚至無須停頓,這是許多基于Java的、需要7×24小時運轉(zhuǎn)的生產(chǎn)系統(tǒng)長期以來迫切希望而又無法實現(xiàn)的需求。把軟件開發(fā)中公用的、通用的功能抽象成標準件,令各個軟件可以使用同樣的模塊來完成特定需求,把軟件開發(fā)變?yōu)榇罱K,這更是軟件工業(yè)化的最終理想,而OSGi為這個目標帶來了實現(xiàn)的曙光。目前,雖然OSGi背后有龐大的廠商支持,對實現(xiàn)框架、中間件和類庫的支撐也足夠完善,但是在國內(nèi)基于OSGi架構(gòu)的系統(tǒng)還不是很多。很多軟件企業(yè)都躍躍欲試,嘗試邁出使用OSGi的第一步,但往往被其復(fù)雜性阻擋于大門之外—如果要用OSGi開發(fā)一個入門程序,并不需要多高深的知識,但如果要把OSGi運用于生產(chǎn)系統(tǒng),則要求該軟件系統(tǒng)的架構(gòu)師和至少一部分中高級開發(fā)人員必須對OSGi有比較深入的了解,業(yè)界對這一部分人才的需求也一直非常大。通過本書,讀者可以通過一個相對輕松的方式學習到OSGi的運作原理,這對自身能力的成長有較大的幫助。本書面向的讀者1.系統(tǒng)架構(gòu)師OSGi目前已經(jīng)成為互聯(lián)網(wǎng)、桌面程序、移動設(shè)備和企業(yè)級應(yīng)用等領(lǐng)域中最流行的系統(tǒng)架構(gòu)方法之一,OSGi本身的設(shè)計思想也非常值得系統(tǒng)架構(gòu)師借鑒。2.使用Java技術(shù)體系的中、高級開發(fā)人員鑒于OSGi技術(shù)本身的復(fù)雜性和相對陡峭的學習曲線,開發(fā)人員入門和深入理解OSGi時要付出較多的努力,本書的理論講解和案例實踐將幫助對OSGi感興趣的開發(fā)人員跨過初學OSGi的那道門檻。3.系統(tǒng)運維工程師保障系統(tǒng)的性能,更新和維護程序版本是系統(tǒng)運維工程師的主要職責。目前Java業(yè)界主流的中間件均開始直接支持甚至基于OSGi架構(gòu)實現(xiàn)。伴隨OSGi的發(fā)展,越來越多使用OSGi技術(shù)的程序被部署到生產(chǎn)系統(tǒng)之中,OSGi已經(jīng)成為一個優(yōu)秀的運維工程師必須了解的專業(yè)知識。本書中的大量案例、代碼、調(diào)優(yōu)實戰(zhàn)將會對系統(tǒng)運維工程師日常的工作起到直接的參考作用。如何閱讀本書本書一共分為四個部分:走近OSGi、OSGi規(guī)范與原理、基于Equinox的OSGi應(yīng)用與實踐、最佳實踐。各個部分之間基本上是互相獨立的,沒有必然的前后依賴關(guān)系,讀者可以從任何一個感興趣的專題開始閱讀,但是每個部分中的各個章節(jié)間會有先后順序。本書并不要求讀者在Java領(lǐng)域具備很高的技術(shù)水平,而且在講解各個知識點時會在保證邏輯準確的前提下、盡量用通俗的語言和案例去講述OSGi中與開發(fā)關(guān)系最為密切的內(nèi)容、但是由于探討OSGi過程中涉及的許多問題不可避免地需要讀者有一定技術(shù)基礎(chǔ),因此本書的定位依然是面向中、高級的程序員群體,對于一些常用的開發(fā)框架、Java API、Java語法等基礎(chǔ)知識點,將認為讀者已有所了解。下面簡要介紹一下本書各部分的內(nèi)容。第一部分 走近OSGi本書第一部分為后文的研究和講解打下一個基礎(chǔ),讓讀者了解OSGi的來龍去脈以及它出現(xiàn)的意義,成為走近Java技術(shù)和Java虛擬機的第一步。第一部分包括第1章:第1章 在這本書中,筆者嘗試闡述與OSGi相關(guān)的三個問題:什么是OSGi?為什么要使用OSGi?如何使用OSGi?在第1章中,筆者將針對前面兩個問題進行分析介紹并給出答案。第二部分 OSGi規(guī)范與原理最新的OSGi R5規(guī)范文檔包含了數(shù)十個子規(guī)范、數(shù)百頁的文檔和近2000個API。一般的開發(fā)人員很難、也沒有必要完全了解OSGi規(guī)范的所有細節(jié)。但是,要學習OSGi技術(shù),閱讀OSGi核心規(guī)范(OSGi Core)是必需的過程。在第二部分中,筆者將介紹OSGi核心規(guī)范中的內(nèi)容。第二部分包括第2至4章:第2章 介紹了OSGi中模塊這個最基礎(chǔ)的概念,并講解了OSGi如何建立模塊、如何描述模塊、模塊間的依賴關(guān)系如何處理等內(nèi)容。第3章 介紹了Bundle是如何啟動的,Bundle自安裝到卸載所經(jīng)歷的生命周期狀態(tài)和這些狀態(tài)的轉(zhuǎn)換條件過程,還介紹了OSGi框架是如何使用啟動級別對系統(tǒng)中的Bundle進行管理調(diào)度的。第4章 介紹了本地及遠程服務(wù)定義、注冊、查找和使用方法,這個過程涉及服務(wù)事件監(jiān)聽,以及使用服務(wù)鉤子干涉服務(wù)與OSGi框架的交互過程等知識。第三部分 基于Equinox的OSGi服務(wù)應(yīng)用與實踐如果說OSGi核心規(guī)范是OSGi技術(shù)的靈魂,OSGi的服務(wù)綱要規(guī)范(OSGi Service Compendium)和OSGi企業(yè)級規(guī)范(OSGi Service Enterpress)就是其軀體。在第三部分中,筆者會詳細介紹其中最常用的幾個子規(guī)范的內(nèi)容。在這一部分中,將會把OSGi技術(shù)從理論落地到實踐之中,結(jié)合目前使用范圍最廣的OSGi實現(xiàn)Equinox和一個穿插整個部分的完整案例來講解OSGi技術(shù)的使用。第三部分包括第5至11章:第5章 介紹了Equinox和OSGi的關(guān)系、Equinox的組成,以及如何獲取、安裝、使用和調(diào)試Equinox的代碼。本章奠定了整個第三部分的技術(shù)基礎(chǔ)。第6章 嘗試實現(xiàn)了一個名為“Neonat”的基于Equinox框架的Telnet BBS,這個項目將迭代貫穿于第三部分。另外,還從浩瀚龐大的Equinox源碼中挑選出四個關(guān)鍵功能點進行源碼解析。讀者在理解了Equinox這幾個關(guān)鍵功能點是如何實現(xiàn)的之后,與前面第一部分介紹的OSGi規(guī)范的理論相互對照和印證,可以更好地理解OSGi的技術(shù)原理,知道為何要這樣設(shè)計和實現(xiàn)。第7章 介紹了服務(wù)端OSGi的應(yīng)用,分析了OSGi的HTTP Service規(guī)范的使用和原理,及如何為Neonat添加Web訪問模塊。第8章 介紹了OSGi的User Admin服務(wù)的基本使用,以及如何為Neonat添加用戶管理模塊,如何實現(xiàn)用戶權(quán)限控制。第9章 介紹了OSGi的Preferences服務(wù),重新實現(xiàn)了Neonat的數(shù)據(jù)訪問模塊,展示了如何使用Preferences服務(wù)來持久化非事務(wù)性數(shù)據(jù)。第10章 介紹了聲明式服務(wù)的使用。聲明式服務(wù)規(guī)范的制定,推動了OSGi服務(wù)從程序化的服務(wù)模型向聲明式的服務(wù)模型發(fā)展,這對整個OSGi來說也是一項非常有意義的進化,令OSGi的服務(wù)真正成為一項可統(tǒng)一分配、使用和管理的資源。第11章 介紹了OSGi R5中最新出現(xiàn)的Subsystem規(guī)范,這是OSGi R5相對R4.3最重要的改進。在制定了Subsystem規(guī)范(及其相關(guān)的Respository和Resolver等規(guī)范)后,表明OSGi對企業(yè)級開發(fā)的支持已經(jīng)達到相當完善的程度了。Subsystem讓各個軟件廠商的OSGi企業(yè)級容器有了通用的程序發(fā)布格式,讓OSGi支持者能向同一個方向努力,推動企業(yè)級OSGi的發(fā)展,這點將是有深遠影響的。第四部分 最佳實踐學習過OSGi的原理、規(guī)范和各種服務(wù)的使用后,第四部分筆者將針對開發(fā)實踐中遇到的具體問題進行分析、講解,介紹OSGi的各種最佳實踐。第四部分包括12至14章:第12章 介紹了OSGi的最佳實踐,包括Bundle命名方法、模塊劃分、依賴關(guān)系處理、保持OSGi動態(tài)性、管理程序啟動順序、使用API基線管理模塊版本等各方面的實踐技巧。第13章 介紹了Spring DM的原理、使用,以及如何把基于Spring的程序引入到OSGi環(huán)境之中。第14章 講解了單元測試和集成測試在OSGi程序中的意義,展示了在OSGi環(huán)境中如何進行程序測試,以及相關(guān)測試工具的使用??闭`和支持在本書交稿的時候,筆者并沒有想象中那樣興奮或輕松,在寫作之時那種“戰(zhàn)戰(zhàn)兢兢、如履薄冰”感覺依然縈繞在心頭。在寫作過程中,在每一章、每一節(jié)落筆之時,筆者都在考慮如何寫才能把這個知識點有條理地講述出來,都在擔心會不會由于自己理解有偏差而誤導(dǎo)了大家。囿于作者水平和寫作時間,書中存在不妥之處在所難免,所以特別開辟了一個讀者郵箱,讀者有任何意見、建議都歡迎與筆者聯(lián)系。另外,讀者可以從華章公司的網(wǎng)站本書的相應(yīng)頁面下載書中所涉及的源碼。寫書與寫程序一樣,作品一定都有不完美之處,因為不完美,我們才有不斷追求完美的動力。
內(nèi)容概要
本書是原創(chuàng)Java技術(shù)圖書領(lǐng)域繼《深入理解Java虛擬機》后的又一實力之作,也是全球首本基于最新OSGi R5.0規(guī)范的著作。理論方面,既全面解讀了OSGi規(guī)范,深刻揭示了OSGi原理,詳細講解了OSGi服務(wù),又系統(tǒng)地介紹了Equinox框架的使用方法,并通過源碼分析了該框架的工作機制;實踐方面,不僅包含一些典型的案例,還總結(jié)了大量的最佳實踐,極具實踐指導(dǎo)意義。
全書共14章,分4個部分。第一部分(第1章):走近OSGi,主要介紹了什么是OSGi以及為什么要使用OSGi。第二部分(第2~4章):OSGi規(guī)范與原理,對最新的OSGi R5.0中的核心規(guī)范進行了全面的解讀,首先講解了OSGi模塊的建立、描述、依賴關(guān)系的處理,然后講解了Bundle的啟動原理和調(diào)度管理,最后講解了與本地及遠程服務(wù)相關(guān)的內(nèi)容。第三部分:OSGi服務(wù)與Equinox應(yīng)用實踐(第5~11章),不僅詳細講解了OSGi服務(wù)綱要規(guī)范和企業(yè)級規(guī)范中最常用的幾個子規(guī)范和服務(wù)的技術(shù)細節(jié),還通過一個基于Equinox的BBS案例演示了Equinox的使用方法,最重要的是還通過源碼分析了Equinox關(guān)鍵功能的實現(xiàn)機制和原理。第四部分:最佳實踐(第12~14章),總結(jié)了大量關(guān)于OSGi的最佳實踐,包括從Bundle如何命名、模塊劃分、依賴關(guān)系處理到保持OSGi動態(tài)性、管理程序啟動順序、使用API基線管理模塊版本等各方面的實踐技巧,此外還介紹了Spring DM的原理以及如何在OSGi環(huán)節(jié)中進行程序測試。
作者簡介
周志明,資深Java技術(shù)專家,對JavaEE企業(yè)級應(yīng)用開發(fā)、OSGi、Java虛擬機和工作流等都有深入的研究,并在大量的實踐中積累了豐富的經(jīng)驗。尤其精通Java虛擬機,撰寫了大量與JVM相關(guān)的經(jīng)典文章,被各大技術(shù)社區(qū)爭相轉(zhuǎn)載,是ITeye等技術(shù)社區(qū)公認的Java虛擬機方面的領(lǐng)袖人物之一,著有經(jīng)典著作《深入理解Java虛擬機:JVM高級特性與最佳實踐》(2年內(nèi)重印十數(shù)次,獲得業(yè)界多個圖書獎項),廣獲讀者好評?,F(xiàn)任遠光軟件股份有限公司平臺開發(fā)部經(jīng)理兼平臺架構(gòu)師,先后參與過國家電網(wǎng)、南方電網(wǎng)等多個國家級大型ERP項目的平臺架構(gòu)工作,對軟件系統(tǒng)架構(gòu)也有深刻的認識和體會。謝小明,資深Java技術(shù)專家,具有豐富的JavaEE企業(yè)級應(yīng)用開發(fā)開發(fā)經(jīng)驗,對OSGi、Spring、Hibernate等技術(shù)和框架有比較深入的研究和認識。喜歡鉆研運行與JVM之上的其他語言,如Scala和Clojure等?,F(xiàn)任遠光軟件股份有限公司平臺開發(fā)部平臺架構(gòu)師,先后參加與過國家電網(wǎng)、南方電網(wǎng)等多個國家級大型ERP項目的平臺架構(gòu)工作。
書籍目錄
前言第一部分 走近OSGi第1章 Java模塊化之路 21.1 什么是OSGi 21.1.1 OSGi規(guī)范的演進 41.1.2 Java模塊化規(guī)范之爭 71.2 為什么使用OSGi 111.2.1 OSGi能讓軟件開發(fā)變得更容易嗎 121.2.2 OSGi能讓系統(tǒng)變得更穩(wěn)定嗎 131.2.3 OSGi能讓系統(tǒng)運行得更快嗎 141.2.4 OSGi能支撐企業(yè)級開發(fā)嗎 151.3 本章小結(jié) 16第二部分 OSGi規(guī)范與原理第2章 模塊層規(guī)范與原理 182.1 OSGi規(guī)范概要 182.2 Bundle 202.3 描述元數(shù)據(jù) 212.3.1 預(yù)定義標記 212.3.2 使用可視化工具 272.4 Bundle的組織與依賴 312.4.1 導(dǎo)出和導(dǎo)入Package 312.4.2 約束規(guī)則與示例 382.4.3 校驗Bundle有效性 442.5 OSGi的類加載架構(gòu) 452.5.1 父類加載器 462.5.2 Bundle類加載器 472.5.3 其他類加載器 492.5.4 類加載順序 502.6 定義執(zhí)行環(huán)境 512.7 本地化 542.8 本章小結(jié) 55第3章 生命周期層規(guī)范與原理 563.1 Bundle標識 563.2 Bundle狀態(tài)及轉(zhuǎn)換 573.2.1 安裝過程 593.2.2 解析過程 613.2.3 啟動過程 623.2.4 更新過程 633.2.5 停止過程 643.2.6 卸載過程 653.3 啟動級別 653.3.1 設(shè)置啟動級別 663.3.2 調(diào)整活動啟動級別 673.4 事件監(jiān)聽 683.4.1 事件類型 693.4.2 事件分派 703.5 系統(tǒng)Bundle 713.6 Bundle上下文 723.7 本章小結(jié) 73第4章 服務(wù)層規(guī)范與原理 744.1 服務(wù) 744.2 OSGi服務(wù)示例 754.3 服務(wù)屬性 804.3.1 屬性過濾器 824.3.2 預(yù)定義屬性 834.3.3 修改屬性 844.4 服務(wù)工廠 854.5 服務(wù)跟蹤器 864.6 引用服務(wù) 894.7 釋放和注銷服務(wù) 914.8 服務(wù)層事件 914.8.1 事件類型 924.8.2 事件分派 924.8.3 ServiceRegistration對象的提前請求 934.9 遠程服務(wù) 944.9.1 準備遠程服務(wù)環(huán)境 944.9.2 遠程服務(wù)示例 964.9.3 遠程服務(wù)屬性 994.9.4 實現(xiàn)分析 1004.10 服務(wù)鉤子 1014.10.1 EventListenerHook 1014.10.2 FindHook 1014.10.3 ListenerHook 1024.10.4 服務(wù)鉤子示例 1024.11 本章小結(jié) 105第三部分 基于Equinox的OSGi應(yīng)用與實踐第5章 Equinox啟航 1085.1 建立Equinox開發(fā)環(huán)境 1095.1.1 建立運行環(huán)境 1095.1.2 建立編譯及調(diào)試環(huán)境 1105.1.3 建立開發(fā)環(huán)境 1125.2 Equinox常用組件簡介 1175.3 Equinox啟動器 1195.4 使用代碼啟動Equinox 1245.5 本章小結(jié) 125第6章 Equinox基礎(chǔ)應(yīng)用與源碼解析 1266.1 實踐項目—Neonat論壇 1266.1.1 背景與需求 1266.1.2 模塊劃分 1276.1.3 基礎(chǔ)資料模塊 1296.1.4 持久化模塊 1336.1.5 用戶交互模塊 1356.1.6 運行效果 1406.2 Equinox源碼解析 1426.2.1 OSGi容器啟動 1426.2.2 Bundle狀態(tài)恢復(fù) 1476.2.3 解析Bundle依賴關(guān)系 1536.2.4 OSGi類加載器實現(xiàn) 1576.3 本章小結(jié) 162第7章 服務(wù)器端OSGi 1637.1 OSGi與Web服務(wù)器 1637.2 HTTP Service規(guī)范簡介 1667.2.1 服務(wù)目標 1667.2.2 服務(wù)接口 1687.2.3 資源映射規(guī)則 1697.2.4 請求處理過程 1717.3 實踐項目—Neonat論壇的Web模塊 1717.3.1 準備依賴項 1727.3.2 使用HTTP Service 1747.3.3 實現(xiàn)Web交互功能 1767.3.4 運行效果 1787.4 HTTP Service源碼解析 1807.4.1 BridgeServlet與OSGi容器啟動 1807.4.2 BridgeServlet與HTTP請求委派 1867.4.3 DelegateServlet實現(xiàn)原理 1887.5 本章小結(jié) 192第8章 用戶管理服務(wù) 1938.1 User Admin服務(wù)規(guī)范簡介 1938.1.1 服務(wù)目標與基礎(chǔ)概念 1938.1.2 驗證用戶身份 1958.1.3 驗證用戶權(quán)限 1968.1.4 User Admin事件 1978.2 實踐項目—Neonat論壇用戶管理模塊 1988.2.1 需求與依賴項分析 1988.2.2 用戶與用戶組的實現(xiàn) 2008.2.3 頁面權(quán)限 2018.2.4 用戶登錄與身份驗證 2028.3 User Admin源碼解析 2068.3.1 用戶管理實現(xiàn) 2068.3.2 外部服務(wù)使用實踐 2088.4 本章小結(jié) 211第9章 Preferences服務(wù) 2129.1 Preferences服務(wù)規(guī)范簡介 2129.1.1 服務(wù)目標 2129.1.2 數(shù)據(jù)結(jié)構(gòu) 2149.1.3 屬性 2159.1.4 并發(fā)處理 2169.1.5 清理遺留數(shù)據(jù) 2179.2 實踐項目—Neonat論壇持久化模塊 2179.2.1 編碼實現(xiàn) 2179.2.2 模塊熱切換 2209.3 Preferences源碼解析 2229.3.1 數(shù)據(jù)結(jié)構(gòu)實現(xiàn) 2249.3.2 屬性存取 2289.3.3 后端存儲系統(tǒng) 2299.4 本章小結(jié) 234第10章 聲明式服務(wù) 23510.1 聲明式服務(wù)規(guī)范簡介 23610.1.1 服務(wù)目標 23610.1.2 定義Component 23610.1.3 Component類型 23710.1.4 Component生命周期 24010.1.5 Component屬性 24510.1.6 綁定與發(fā)布服務(wù) 24510.1.7 激活與鈍化方法 25210.1.8 Component配置總結(jié) 25410.2 實踐項目—使用聲明式服務(wù)改造Neonat論壇 25910.2.1 可視化編輯工具 25910.2.2 DS容器管理 26310.3 DS容器源碼解析 26410.3.1 容器啟動 26410.3.2 加載Bundle中的Component 26710.3.3 動態(tài)依賴解析 27210.4 本章小結(jié) 274第11章 Subsystems服務(wù) 27611.1 服務(wù)目標 27611.2 Subsystem格式 27711.3 Subsystem元數(shù)據(jù) 27811.3.1 SUBSYSTEM.MF標識 27811.3.2 DEPLOYMENT.MF標識 28111.4 Subsystem類型與共享策略 28311.5 組織管理Subsystem 28511.6 Subsystem部署與依賴策略 28911.7 Subsystem生命周期 29111.7.1 安裝 29211.7.2 解析 29311.7.3 啟動 29411.7.4 停止 29411.7.5 卸載 29511.8 本章小結(jié) 295第四部分 最佳實踐第12章 OSGi最佳實踐 29812.1 Bundle相關(guān)名稱命名 29812.2 Bundle劃分原則 30012.2.1 恰如其分地分配Bundle粒度 30012.2.2 分離OSGi代碼 30012.2.3 分離接口和實現(xiàn) 30012.3 依賴關(guān)系實踐 30112.3.1 依賴分析工具 30112.3.2 避免Require-Bundle 30312.3.3 最小化依賴 30412.3.4 避免循環(huán)依賴 30412.3.5 Equinox x-*依賴 30512.4 Equinox專有類加載機制 30612.4.1 Buddy Loading類加載機制 30612.4.2 ClassLoaderDelegateHook類加載機制 30712.5 Bundle生命周期實踐 30912.5.1 啟動 30912.5.2 停止 30912.6 服務(wù)工廠的特殊性 30912.7 處理非OSGi的JAR包 31112.8 啟動順序?qū)嵺` 31312.8.1 避免啟動順序依賴 31312.8.2 Start Level的使用 31312.9 Fragment Bundle實踐 31412.10 保持OSGi動態(tài)性 31512.11 API Tools實踐 31712.11.1 API Baselines 31712.11.2 API Tools 注解 31912.11.3 API Version版本管理 32212.11.4 二進制文件不兼容 32212.12 本章小結(jié) 322第13章 Spring Dynamic Modules實踐 32413.1 Spring DM入門 32413.1.1 Spring DM項目簡介 32413.1.2 安裝Spring DM 32513.1.3 簡單的Spring DM示例 32613.1.4 Bundle和Spring上下文 33113.1.5 命名空間 33313.2 Spring DM進階 33713.2.1 Spring DM擴展配置 33713.2.2 Web Extender 34413.2.3 Spring DM服務(wù)約束 34513.2.4 在Spring上下文中使用BundleContext 34613.3 Spring DM企業(yè)應(yīng)用 34613.3.1 規(guī)劃OSGi組件 34713.3.2 在Spring DM中使用JPA 34813.3.3 事務(wù)管理 35313.3.4 OSGi企業(yè)規(guī)范中的JPA 35813.4 Spring DM和Blueprint 35913.5 本章小結(jié) 360第14章 構(gòu)建可測試的OSGi系統(tǒng) 36114.1 單元測試的必要性 36214.2 單元測試的重要性 36314.3 可測試代碼的特征 36414.4 OSGi單元測試 36514.4.1 如何組織測試代碼 36614.4.2 如何進行OSGi單元測試 36714.5 OSGi集成測試 37314.5.1 Eclipse JUnit Plug-in Test 37414.5.2 Spring DM Test 37914.5.3 Pax Exam 38314.6 本章小結(jié) 384附錄A Java類加載器簡介 385附錄B Equinox控制臺命令 392附錄C OSGi子規(guī)范目錄 397附錄D OSGi相關(guān)項目 399附錄E Equinox啟動配置參數(shù) 401
編輯推薦
《深入理解OSGi:Equinox原理、應(yīng)用與最佳實踐》基于最新OSGi R5.0規(guī)范撰寫,繼《深入理解Java虛擬機》后的又一實力之作,全面解讀OSGi規(guī)范,深刻揭示OSGi原理,詳細講解OSGi服務(wù),系統(tǒng)地介紹Equinox框架的用法,并通過源代碼分析其工作機制,包含大量可操作性極強的解決方案和最佳實踐。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載