1直想寫1些關于JavaEE的東西,從剛開始看《Ejb in Action》的時候就想寫,到后來工作中1直在使用JavaEE的技術,開源的流行框架丟的也差不多了。JavaEE企業級的東西把自己弄的也跟傻子似的。回過頭來看看避免自己真的成了傻子。
先從“組件”(component)說起,不知道從甚么時候開始人們希望軟件開發就像孩子搭積木似的可以是組裝的。隨之而來的1個概念就是“組件”用專業1些的話說就是“組件是1個自包括的、可以重用的軟件單元,可以把它集成到利用程序中”更加直白1些說就是1塊積木是可以獨立完成1項任務的,而且這個塊積木是可以被多個地方使用的(想一想螺絲螺母、發動機相信能幫助讀者理解這個概念)。在Java中組件的最簡單情勢是JavaBean,我們通常叫bean初學者聽到這個詞會罵街,豬8戒,豬悟能、豬剛鬣、木母、凈壇使者、天蓬元帥1堆名字到頭來不就是1頭豬么。甚么bean,Javabean到頭來不都是Java中的類么。罵街歸罵街不同的名稱在不同的地方是成心義的。天蓬元帥值這頭豬在天庭當官時候的稱呼,豬8戒是這頭豬跟了唐僧以后的稱呼,豬剛鬣是豬在高老莊時期的稱呼……好像說遠了,總之要說的是不同的名稱所包括的意義和要反應的東西是有區分的千萬不要1葉障目。
在企業范圍內,組件更專注于實現業務服務,同時根據組件可履行的業務操作定義組件的協議。Java EE的標準組件模型是EJB模型,它定義了包裝、部署和與自包括業務服務進行交互的方式。EJB的類型決定了需要與之交互的協議。會話bean(Session bean)使用標準的Java接口來定義可以調用的業務方法集合,而消息驅動bean(message-driven bean)的行動取決于bean旨在接受的消息類型和格式。
在我們平時開發當中時候使用組件模型是可選的,1般來講可用戶會話bean的容器服務也可用戶servlet。結果致使現在大多數Web利用程序完全避開了EJB,直接從Servlet到http://www.jyygyx.com/db/。使用組件需要以層的情勢組織利用程序,其中業務服務處于組件模型中,且表示服務層位于它之上。
目前之所以很多Web利用程序不選擇EJB是由于歷史上EJB的復雜性。隨著這個問題得到解決人們漸漸的收獲定義明確的業務服務集合所帶給利用程序的好處。
l 疏松耦合(loosecoupling)。使用組件來定義服務鼓勵了利用程序的層之間的疏松耦合。更改1個組件的實現對客戶端或其他依賴與它的組件沒有任何影響。
l 依賴性管理(dependency management)。組建的依賴性可以在元數據中聲明,并由容器自動解析。
l 聲明周期管理(Lifecycle management)。組件的生命周期又利用http://www.jyygyx.com/server/明肯定義和管理。組件實現可以參與聲明周期操作來獲得和釋放資源,或履行其他的初始化和關閉行動。
l 聲明性容器服務(declarative container service)。組件的業務方法是由利用http://www.jyygyx.com/server/所截獲,以利用注入并發性、事務管理、安全性和遠程處理之類的服務。
l 可移植性(portability)。對遵照JavaEE標準并部署到基于標準的http://www.jyygyx.com/server/上的組件,額可以更加輕松地把它們從1個兼容http://www.jyygyx.com/server/移植到另外一個http://www.jyygyx.com/server/。
l 可擴大性和可靠性(scalability and reliability)。利用http://www.jyygyx.com/server/旨在確保組件可以有效地實現可擴大性管理。根據組件的類型和http://www.jyygyx.com/server/配置,使用組件實現的業務操作可以重試失敗了的方法調用,或乃至把故障轉移到集群上的另外一臺http://www.jyygyx.com/server/。