版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、哈爾濱工業(yè)大學計算機學院唐好選Email:基本內(nèi)容基本內(nèi)容pJava EE概述pEJB技術(shù)p基于EJB構(gòu)件的開發(fā)過程p三種構(gòu)件模型的關(guān)系J2EE概述p J2SE (Java2 Platform, Standard Edition)p 用于桌面程序和Java小程序開發(fā)p 稱為J2SDK,簡稱JDKp J2EE (Java2 Platform, Enterprise Edition)p 用于企業(yè)級開發(fā)p 稱為J2SDKEEp J2ME (Java2 Platform, Micro Edition)p 用于手持設(shè)備的開發(fā)(手機和PDA)p JRE (Java Runtime Environment)
2、Java平臺的發(fā)展平臺的發(fā)展Java平臺的發(fā)展平臺的發(fā)展Java EE的發(fā)展的發(fā)展p J2EE 1.0 1999年發(fā)布p J2EE 1.2 2000年發(fā)布p J2EE 1.3 2001 年發(fā)布p J2EE 1.4 2003年發(fā)布p J2EE 1.5 2005年發(fā)布,即Java EEp Java EE 1.6 2009年發(fā)布p Java EE 1.7-2013年發(fā)布,最新版Java EE 1.7的核心組件的核心組件Java EE 應(yīng)用架構(gòu)示例(應(yīng)用架構(gòu)示例(1)Java EE 應(yīng)用架構(gòu)示例(應(yīng)用架構(gòu)示例(2)Java EE核心技術(shù)核心技術(shù)瀏覽器Applet應(yīng)用程序客戶機RMIWeb/HTTP服務(wù)
3、器JSP/JSFServlet表示層應(yīng)用服務(wù)器EJBEJBEJBEJBEJBEJBEJBJava IDLJNDIJMSJPA專業(yè)服務(wù)層遺產(chǎn)系統(tǒng)數(shù)據(jù)庫后端系統(tǒng)Java EE核心技術(shù)(核心技術(shù)(1)pEJB(Enterprise Java Bean)p提供了讓客戶端使用遠程的分布式對象的框架p規(guī)定了EJB構(gòu)件如何與EJB容器進行交互pEJB容器提供了目錄服務(wù)、事務(wù)管理、安全、連接池管理和容錯服務(wù)等pRMI ( Remote Method Invocation)和RMI-IIOP p是EJB構(gòu)件和客戶端的通信APIp允許進程間通信并提供其它與通信相關(guān)的服務(wù)p利用IIOP作為通信協(xié)議pJNDI(Jav
4、a Naming and Directory Interface)p是命名和目錄服務(wù)的標準p實現(xiàn)對象的命名,包括Web組件、EJB組件、數(shù)據(jù)庫系統(tǒng)等p對象的名字通過命名和目錄服務(wù)綁定到具體對象pEJB依賴JNDI通過網(wǎng)絡(luò)查找分布式構(gòu)件p在Java EE環(huán)境下,任何構(gòu)件必須在JNDI服務(wù)器注冊pJPA(Java Persistence API)p 用于對象持久化的API,本質(zhì)上是一種ORM規(guī)范p 支持XML和注解p 通過面向?qū)ο蠖敲嫦驍?shù)據(jù)庫的查詢語言查詢數(shù)據(jù),避免程序的 SQL語句緊密耦合Java EE核心技術(shù)(核心技術(shù)(2)pJTA (Java Transaction API)p是一個高層次
5、的事務(wù)處理接口p應(yīng)用程序可通過JTA控制事務(wù)處理pJMS( Java Message Services)p是與消息驅(qū)動構(gòu)件通訊的APIp同時支持點對點消息隊列服務(wù)和發(fā)布-訂閱消息服務(wù)p支持可靠消息傳遞、消息傳遞事務(wù)及持續(xù)消息等p是EJB消息驅(qū)動Bean的基礎(chǔ)Java EE核心技術(shù)(核心技術(shù)(3)pJSP(Java Server Page)和 Servlet p是服務(wù)器端的程序p用于擴展服務(wù)器功能,響應(yīng)用戶請求p可將結(jié)果轉(zhuǎn)化為標準的HTML代碼返回給用戶pJSF(Java Server Faces)p用于構(gòu)建Web應(yīng)用程序的新標準Java框架p提供一種以組件為中心來開發(fā)Java Web用戶界面的
6、方法p將Web應(yīng)用開發(fā)者劃分為三個角色:網(wǎng)頁設(shè)計人員;應(yīng)用程序設(shè)計人員;UI組件開發(fā)人員Java EE核心技術(shù)(核心技術(shù)(4)pWebSocket APIp是下一代客戶端-服務(wù)器的異步通信方法,取代了單個TCP套接字,可用于任意的客戶端和服務(wù)器程序,由W3C進行標準化pWebSocket API可使服務(wù)器和客戶端可以在給定時間范圍內(nèi)的任意時刻,相互推送信息pWebSocket并不限于以Ajax(或XHR)方式通信,服務(wù)器和客戶端可以彼此相互推送信息pWebSocket允許跨域通信p Java IDL/CORBAp是CORBA規(guī)約的一種Java實現(xiàn)p通過Java IDL可以讓Java對象發(fā)布到C
7、ORBA的ORB上,從而通過ORB與別的CORBA對象進行交互Java EE核心技術(shù)(核心技術(shù)(5)pInterceptors(攔截器)p在訪問某個Action或Action的某個方法之前或之后實施攔截p攔截器是可插拔的,是AOP的一種實現(xiàn)pJAF(Java Activation Framework)/ Java Mailp是一套允許在Java程序中以與平臺無關(guān)、協(xié)議無關(guān)的方式發(fā)送電子郵件的APIpJavaMail可利用JAF處理郵件的編碼pXML( 可擴展標記語言)p是一種描述數(shù)據(jù)的元語言pJava用JAXP( Java API for XML Parsing)對XML文件進行解析pEJB通
8、常將XML作為元標記語言表達內(nèi)容Java EE核心技術(shù)(核心技術(shù)(6)EJB技術(shù)EJB技術(shù)技術(shù)pEJB簡介pEJB體系結(jié)構(gòu)pEJB編程模型pEJB構(gòu)件接口pEJB構(gòu)件規(guī)約pEJB構(gòu)件分類pEJB構(gòu)件的開發(fā)什么是什么是EJB?pEJB不是一種產(chǎn)品,而是為開發(fā)和使用“基于事務(wù)和分布對象應(yīng)用的服務(wù)器端構(gòu)件”而定義的一種技術(shù)規(guī)約,用戶可根據(jù)該規(guī)約開發(fā)EJB構(gòu)件pEJB構(gòu)件是一組分布式的對象,可通過EJB容器的控制為分布在因特網(wǎng)上的用戶提供遠程服務(wù)什么是什么是EJB?pEJB規(guī)約定義了EJB構(gòu)件與EJB容器之間的交互機制,描述了EJB構(gòu)件和EJB容器在運行時的行為,保證了EJB構(gòu)件在容器間的可移植性p安
9、全訪問如何檢驗p事務(wù)如何管理p持久性如何應(yīng)用pEJB容器運行在EJB服務(wù)器中,EJB規(guī)約還定義了EJB容器和EJB服務(wù)器的標準模型EJB的目標的目標pEJB的目標是為服務(wù)器端構(gòu)件系統(tǒng)定義一個技術(shù)規(guī)范,該規(guī)范可實現(xiàn)如下要求:p提供一個標準的、分布的、基于OO的體系結(jié)構(gòu)p屏蔽復(fù)雜的系統(tǒng)級功能需求p兼容CORBA標準p具有與非Java應(yīng)用之間的互操作能力EJB的現(xiàn)狀的現(xiàn)狀-EJB3.0p EJB3.0于2006年5月隨JAVA EE 5發(fā)布p EJB3.0完全拋棄了EJB 2.x實體Bean的設(shè)計,僅僅保留原有的Session Bean和消息驅(qū)動Bean;引進了全新的JPA規(guī)范作為持久化解決方案p
10、簡化了EJB 2.x中Session Bean的開發(fā),Session Bean不再需要Home接口,只要求提供遠程或本地的業(yè)務(wù)接口即可p 不再推薦使用XML文件作為部署描述文件,而是改為使用Annotation來設(shè)置部署描述信息EJB的現(xiàn)狀的現(xiàn)狀-EJB3.1p EJB3.1于2009年隨JAVA EE 1.6發(fā)布p 允許企業(yè)Bean只提供一個Bean類,甚至無須提供業(yè)務(wù)接口p 允許通過異步的方式調(diào)用Session Bean的業(yè)務(wù)方法p 簡化了EJB的類文件必須打包到JAR文件中的限制,允許直接將EJB類放到WAR文件中EJB的現(xiàn)狀的現(xiàn)狀-EJB3.2pEJB3.2于2013年7月隨JAVA
11、EE 7發(fā)布p支持本地異步會話Bean調(diào)用pJava I/O訪問權(quán)已放寬,用“應(yīng)謹慎行事”取代了“不允許”p有狀態(tài)會話bean的生命周期回調(diào)攔截方法,可以在一個事務(wù)環(huán)境中執(zhí)行(由生命周期回調(diào)方法的事務(wù)屬性決定) p可以完全禁用特定的有狀態(tài)會話bean的鈍化pTimerService API已被擴展,可以在同一個EJB模塊中查詢所有活動計時器p會話bean指定實現(xiàn)接口(作為本地或遠程業(yè)務(wù)接口)的默認規(guī)則已經(jīng)放寬,可以包含多個接口Java EE的應(yīng)用架構(gòu)的應(yīng)用架構(gòu)-經(jīng)典經(jīng)典JAVA EE架構(gòu)架構(gòu)p 以EJB為核心,前端以JSF(Java Server Faces)為MVC框架的技術(shù)架構(gòu),這種技術(shù)架
12、構(gòu)以Sun提倡的官方Java EE技術(shù)為主Java EE的應(yīng)用架構(gòu)的應(yīng)用架構(gòu)-輕量級輕量級Java EE架構(gòu)架構(gòu)p 以SpringHibernate為核心,前端以Struts 1或Struts 2為MVC框架的技術(shù)架構(gòu),這種技術(shù)架構(gòu)以主流的開源框架為主Spring框架框架p 組成 Spring 框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯(lián)合實現(xiàn)p 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory。BeanFactory 使用控制反轉(zhuǎn) (IOC) 模式將應(yīng)用程序的配置和依賴性規(guī)范與實際應(yīng)用程序代碼分開p Spring 上下文
13、:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業(yè)服務(wù),例如 JNDI、EJB、電子郵件、國際化、校驗和調(diào)度功能p Spring MVC 框架:MVC 框架是一個全功能的構(gòu)建 Web 應(yīng)用程序的 MVC 實現(xiàn)。通過策略接口,MVC 框架變成為高度可配置的,MVC 容納了大量視圖技術(shù)Spring框架和框架和EJBp Spring框架實際上大量參考了EJB的設(shè)計理念,只是Spring擯棄了EJB開發(fā)中的3大煩瑣之處:(1)EJB組件的接口和類必須繼承指定接口或類(2)需要大量使用XML配置文件(3)EJB組件必須打包成JAR包p Spring容
14、器取代了原有的EJB容器,因此以Spring框架為核心的應(yīng)用無須EJB容器支持,可以在Web容器中運行p Spring容器管理的不再是復(fù)雜的EJB組件,而是POJO(Plain Old Java Object) BeanEJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)p請求EJB構(gòu)件服務(wù)的應(yīng)用程序,EJB規(guī)約為創(chuàng)建EJB構(gòu)件的客戶接口定義了一套標準,主要包括:pEJB Home接口:客戶使用JNDI來查找對EJB Home接口的引用,為客戶機創(chuàng)建、刪除、查找EJB Remote接口對象的句柄提供了相應(yīng)的操作pEJB 業(yè)務(wù)接口:通過該接口可調(diào)用構(gòu)件的業(yè)務(wù)方法pRMI/IIOP或RMI/JRMP協(xié)議:客戶機和容器通信的
15、標準協(xié)議,這些底層的分布式通信機制對于EJB客戶機和EJB構(gòu)件開發(fā)者都是透明的EJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)-EJB客戶機客戶機p為使用EJB構(gòu)件的應(yīng)用程序提供操作環(huán)境,并提供所有必要的服務(wù)來支持EJB體系結(jié)構(gòu)pJava白皮書承諾:“EJB規(guī)約為每個支持Java程序的應(yīng)用服務(wù)器定義了一個標準模型,任何廠商都可以使用此模型來實現(xiàn)對EJB構(gòu)件的支持”pEJB服務(wù)器的主要功能包括p管理EJB容器p提供對操作系統(tǒng)服務(wù)的訪問p提供與Java相關(guān)的服務(wù)EJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)-EJB服務(wù)器服務(wù)器pEJB容器為EJB構(gòu)件提供運行環(huán)境,EJB容器對EJB應(yīng)用程序是透明的pEJB白皮書描述:“EJB容器管理其中的
16、EJB構(gòu)件,客戶機應(yīng)用程序并不直接與EJB構(gòu)件進行交互,相反,客戶機應(yīng)用程序通過由容器生成的封裝接口與EJB構(gòu)件進行交互,當客戶機使用封裝接口調(diào)用各種操作時,容器截獲每個方法調(diào)用,并插入管理服務(wù)”EJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)-EJB容器容器EJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)-EJB容器容器p面向?qū)ο髉分布式計算:EJB構(gòu)件在理論上是位置透明的p使用代理對象:客戶機訪問EJB構(gòu)件時使用代理對象,構(gòu)件本身對客戶機是不可訪問的EJB的編程模型的編程模型-關(guān)鍵特征關(guān)鍵特征EJB的邊界的邊界EJB構(gòu)件接口構(gòu)件接口p構(gòu)件接口是構(gòu)件提供者為便于復(fù)用者(客戶)復(fù)用該構(gòu)件所提供的必要信息p構(gòu)件與容器協(xié)作實現(xiàn)這些接口EJB
17、EJB構(gòu)件規(guī)約構(gòu)件規(guī)約EJB構(gòu)件規(guī)約構(gòu)件規(guī)約pEJB可使Java編寫的服務(wù)器組件開發(fā)和部署標準化pEJB構(gòu)件規(guī)約定義了以下接口pEJB和容器之間的接口p容器和應(yīng)用服務(wù)器之間的接口p容器和客戶端之間的接口p容器和持久管理器之間的接口EJB構(gòu)件分類構(gòu)件分類pEJB構(gòu)件分為三(四)種基本的類型p會話構(gòu)件(Session Bean)p有態(tài)會話構(gòu)件(Stateless Session Bean)p無態(tài)會話構(gòu)件(Statefull Session Bean)p消息驅(qū)動構(gòu)件(Message-Driven Bean)p實體構(gòu)件(實體構(gòu)件(Entity Bean)會話構(gòu)件會話構(gòu)件p特征 p與單個客戶相對應(yīng)p不直
18、接表示數(shù)據(jù)庫中的共享數(shù)據(jù)p生命周期相對較短p當EJB容器崩潰時,也隨著消失p類別pStateful (有態(tài))pStateless (無態(tài))有態(tài)構(gòu)件的生命周期有態(tài)構(gòu)件的生命周期PreDestroy超時postConstruct業(yè)務(wù)方法PrePassivatePostActivate超時實例拋出系統(tǒng)異常無態(tài)構(gòu)件的生命周期無態(tài)構(gòu)件的生命周期PreDestroyPostConstruct業(yè)務(wù)方法兩種會話構(gòu)件的選擇兩種會話構(gòu)件的選擇pStateful ? Stateless?p過程需要保持狀態(tài)?p加入過程中斷,恢復(fù)運行時需要以前的信息嗎?兩種會話構(gòu)件的選擇兩種會話構(gòu)件的選擇p發(fā)生下列情況時應(yīng)該考慮使用有
19、狀態(tài)會話Beanp在方法調(diào)用時,會話Bean需要維護成員變量的數(shù)據(jù)p實例化會話Bean的時候,必須初始化會話Bean的狀態(tài)p會話Bean需要跨越多個方法調(diào)用,并維護客戶端的信息p會話Bean正在服務(wù)一個交互客戶端,EJB容器或應(yīng)用服務(wù)器需要了解該客戶端p發(fā)生如下情況時應(yīng)考慮使用無狀態(tài)會話Beanp不需要維護跨越方法調(diào)用的成員變量中的數(shù)據(jù)p會話Bean提供的服務(wù)并不針對某種客戶端消息驅(qū)動構(gòu)件(消息驅(qū)動構(gòu)件(MDB)pMDB是一種JMS消息的使用者,MDB負責從消息隊列或者消息主題中讀取消息pMDB只提供消息接受方法,客戶端不直接與MDB打交道pMDB的輸入?yún)?shù)只有一種類型,即消息對象,是那些實現(xiàn)
20、了Message接口的Java對象p生命周期由EJB容器控制p客戶端和MDB是完全獨立的,客戶端無法直接調(diào)用MDB方法,而是由消息服務(wù)器負責把消息發(fā)送給MDBp無狀態(tài)消息驅(qū)動構(gòu)件(消息驅(qū)動構(gòu)件(MDB)MDB的生命周期的生命周期PreDestroyPostConstructp客戶端可直接調(diào)用Session Bean,發(fā)布消息到主題pMDB接收并處理消息EJB構(gòu)件開發(fā)與應(yīng)用pSessionBean有兩個共同的組成部分:p業(yè)務(wù)接口(Business interface):定義EJB構(gòu)件的邏輯方法pBean類(Bean class):實現(xiàn)主要的業(yè)務(wù)邏輯EJB構(gòu)件的開發(fā)(構(gòu)件的開發(fā)(SessionBe
21、an)p開發(fā)一個 SessionBean,需要定義接口和 Beanclass,接口分為遠程接口(Remote Interface)和本地接口(Local Interface)p遠程接口( Remote Interface)定義業(yè)務(wù)方法,可以被 EJB 容器之外的應(yīng)用訪問到p本地接口(Local Interfac)同樣定義業(yè)務(wù)方法,可以被同處于 EJB 容器內(nèi)的其它應(yīng)用使用。因為 local 接口允許 bean 之間直接通過內(nèi)存交互,沒有分布式對象協(xié)議的開銷,從而改善了性能pBean類包含了業(yè)務(wù)邏輯,必須具備一個遠程或本地接口,Bean類應(yīng)實現(xiàn)接口的業(yè)務(wù)方法。在 EJB3中,不要求同時實現(xiàn) re
22、mote 和 local 接口,但實現(xiàn)兩者是比較好的做法開發(fā)開發(fā)SessionBeanp第一步:定義一個包含業(yè)務(wù)方法的接口。該接口不需要包含任何注釋,是一個普通的 java 接口。調(diào)用 EJB的客戶端使用這個接口引用從 EJB 容器返回的存根(stub)開發(fā)開發(fā)SessionBean第一步第一步p第二步:編寫B(tài)eanClass開發(fā)開發(fā)SessionBean第二步第二步SessionBean的客戶端開發(fā)的客戶端開發(fā)public static void main(String args) Properties props = new Properties();props.setProperty(java.naming.factory.initial, erfaces.NamingContextFactory);props.setProperty(vider.url, localhost:1099);try InitialContext ctx = new InitialContext(props);HelloWorld helloworld = (HelloWorld) ctx.lookup(HelloWorld
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高效能玻璃鋼化糞池采購協(xié)議范本版B版
- 2024自用房屋租賃合同
- 2025年違約借款合同糾紛解決途徑3篇
- 二零二五年度新能源汽車OEM制造與零部件供應(yīng)合同3篇
- 2025廠房土地買賣合同中對環(huán)境友好型建筑標準的約定3篇
- 2025年度森林資源管理與測繪合同范本3篇
- 2024網(wǎng)絡(luò)安全與信息保密合同
- 二零二四三方詢價采購合同-國際物流運輸服務(wù)采購2篇
- 2024石料礦山資源整合與開采合同3篇
- 二零二五版全國CHS技術(shù)交流與合作合同3篇
- 勞務(wù)投標技術(shù)標
- 研發(fā)管理咨詢項目建議書
- 濕瘡的中醫(yī)護理常規(guī)課件
- 轉(zhuǎn)錢委托書授權(quán)書范本
- 一種配網(wǎng)高空作業(yè)智能安全帶及預(yù)警系統(tǒng)的制作方法
- 某墓園物業(yè)管理日常管護投標方案
- 蘇教版六年級數(shù)學上冊集體備課記載表
- NUDD新獨難異 失效模式預(yù)防檢查表
- 內(nèi)蒙古匯能煤電集團有限公司長灘露天煤礦礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案
- 22S702 室外排水設(shè)施設(shè)計與施工-鋼筋混凝土化糞池
- 2013日產(chǎn)天籟全電路圖維修手冊45車身控制系統(tǒng)
評論
0/150
提交評論