第08講:JavaEE構件技術_第1頁
第08講:JavaEE構件技術_第2頁
第08講:JavaEE構件技術_第3頁
第08講:JavaEE構件技術_第4頁
第08講:JavaEE構件技術_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、哈爾濱工業(yè)大學計算機學院唐好選Email:基本內容基本內容pJava EE概述pEJB技術p基于EJB構件的開發(fā)過程p三種構件模型的關系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 用于手持設備的開發(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 應用架構示例(應用架構示例(1)Java EE 應用架構示例(應用架構示例(2)Java EE核心技術核心技術瀏覽器Applet應用程序客戶機RMIWeb/HTTP服務

3、器JSP/JSFServlet表示層應用服務器EJBEJBEJBEJBEJBEJBEJBJava IDLJNDIJMSJPA專業(yè)服務層遺產系統(tǒng)數(shù)據庫后端系統(tǒng)Java EE核心技術(核心技術(1)pEJB(Enterprise Java Bean)p提供了讓客戶端使用遠程的分布式對象的框架p規(guī)定了EJB構件如何與EJB容器進行交互pEJB容器提供了目錄服務、事務管理、安全、連接池管理和容錯服務等pRMI ( Remote Method Invocation)和RMI-IIOP p是EJB構件和客戶端的通信APIp允許進程間通信并提供其它與通信相關的服務p利用IIOP作為通信協(xié)議pJNDI(Jav

4、a Naming and Directory Interface)p是命名和目錄服務的標準p實現(xiàn)對象的命名,包括Web組件、EJB組件、數(shù)據庫系統(tǒng)等p對象的名字通過命名和目錄服務綁定到具體對象pEJB依賴JNDI通過網絡查找分布式構件p在Java EE環(huán)境下,任何構件必須在JNDI服務器注冊pJPA(Java Persistence API)p 用于對象持久化的API,本質上是一種ORM規(guī)范p 支持XML和注解p 通過面向對象而非面向數(shù)據庫的查詢語言查詢數(shù)據,避免程序的 SQL語句緊密耦合Java EE核心技術(核心技術(2)pJTA (Java Transaction API)p是一個高層次

5、的事務處理接口p應用程序可通過JTA控制事務處理pJMS( Java Message Services)p是與消息驅動構件通訊的APIp同時支持點對點消息隊列服務和發(fā)布-訂閱消息服務p支持可靠消息傳遞、消息傳遞事務及持續(xù)消息等p是EJB消息驅動Bean的基礎Java EE核心技術(核心技術(3)pJSP(Java Server Page)和 Servlet p是服務器端的程序p用于擴展服務器功能,響應用戶請求p可將結果轉化為標準的HTML代碼返回給用戶pJSF(Java Server Faces)p用于構建Web應用程序的新標準Java框架p提供一種以組件為中心來開發(fā)Java Web用戶界面的

6、方法p將Web應用開發(fā)者劃分為三個角色:網頁設計人員;應用程序設計人員;UI組件開發(fā)人員Java EE核心技術(核心技術(4)pWebSocket APIp是下一代客戶端-服務器的異步通信方法,取代了單個TCP套接字,可用于任意的客戶端和服務器程序,由W3C進行標準化pWebSocket API可使服務器和客戶端可以在給定時間范圍內的任意時刻,相互推送信息pWebSocket并不限于以Ajax(或XHR)方式通信,服務器和客戶端可以彼此相互推送信息pWebSocket允許跨域通信p Java IDL/CORBAp是CORBA規(guī)約的一種Java實現(xiàn)p通過Java IDL可以讓Java對象發(fā)布到C

7、ORBA的ORB上,從而通過ORB與別的CORBA對象進行交互Java EE核心技術(核心技術(5)pInterceptors(攔截器)p在訪問某個Action或Action的某個方法之前或之后實施攔截p攔截器是可插拔的,是AOP的一種實現(xiàn)pJAF(Java Activation Framework)/ Java Mailp是一套允許在Java程序中以與平臺無關、協(xié)議無關的方式發(fā)送電子郵件的APIpJavaMail可利用JAF處理郵件的編碼pXML( 可擴展標記語言)p是一種描述數(shù)據的元語言pJava用JAXP( Java API for XML Parsing)對XML文件進行解析pEJB通

8、常將XML作為元標記語言表達內容Java EE核心技術(核心技術(6)EJB技術EJB技術技術pEJB簡介pEJB體系結構pEJB編程模型pEJB構件接口pEJB構件規(guī)約pEJB構件分類pEJB構件的開發(fā)什么是什么是EJB?pEJB不是一種產品,而是為開發(fā)和使用“基于事務和分布對象應用的服務器端構件”而定義的一種技術規(guī)約,用戶可根據該規(guī)約開發(fā)EJB構件pEJB構件是一組分布式的對象,可通過EJB容器的控制為分布在因特網上的用戶提供遠程服務什么是什么是EJB?pEJB規(guī)約定義了EJB構件與EJB容器之間的交互機制,描述了EJB構件和EJB容器在運行時的行為,保證了EJB構件在容器間的可移植性p安

9、全訪問如何檢驗p事務如何管理p持久性如何應用pEJB容器運行在EJB服務器中,EJB規(guī)約還定義了EJB容器和EJB服務器的標準模型EJB的目標的目標pEJB的目標是為服務器端構件系統(tǒng)定義一個技術規(guī)范,該規(guī)范可實現(xiàn)如下要求:p提供一個標準的、分布的、基于OO的體系結構p屏蔽復雜的系統(tǒng)級功能需求p兼容CORBA標準p具有與非Java應用之間的互操作能力EJB的現(xiàn)狀的現(xiàn)狀-EJB3.0p EJB3.0于2006年5月隨JAVA EE 5發(fā)布p EJB3.0完全拋棄了EJB 2.x實體Bean的設計,僅僅保留原有的Session Bean和消息驅動Bean;引進了全新的JPA規(guī)范作為持久化解決方案p

10、簡化了EJB 2.x中Session Bean的開發(fā),Session Bean不再需要Home接口,只要求提供遠程或本地的業(yè)務接口即可p 不再推薦使用XML文件作為部署描述文件,而是改為使用Annotation來設置部署描述信息EJB的現(xiàn)狀的現(xiàn)狀-EJB3.1p EJB3.1于2009年隨JAVA EE 1.6發(fā)布p 允許企業(yè)Bean只提供一個Bean類,甚至無須提供業(yè)務接口p 允許通過異步的方式調用Session Bean的業(yè)務方法p 簡化了EJB的類文件必須打包到JAR文件中的限制,允許直接將EJB類放到WAR文件中EJB的現(xiàn)狀的現(xiàn)狀-EJB3.2pEJB3.2于2013年7月隨JAVA

11、EE 7發(fā)布p支持本地異步會話Bean調用pJava I/O訪問權已放寬,用“應謹慎行事”取代了“不允許”p有狀態(tài)會話bean的生命周期回調攔截方法,可以在一個事務環(huán)境中執(zhí)行(由生命周期回調方法的事務屬性決定) p可以完全禁用特定的有狀態(tài)會話bean的鈍化pTimerService API已被擴展,可以在同一個EJB模塊中查詢所有活動計時器p會話bean指定實現(xiàn)接口(作為本地或遠程業(yè)務接口)的默認規(guī)則已經放寬,可以包含多個接口Java EE的應用架構的應用架構-經典經典JAVA EE架構架構p 以EJB為核心,前端以JSF(Java Server Faces)為MVC框架的技術架構,這種技術架

12、構以Sun提倡的官方Java EE技術為主Java EE的應用架構的應用架構-輕量級輕量級Java EE架構架構p 以SpringHibernate為核心,前端以Struts 1或Struts 2為MVC框架的技術架構,這種技術架構以主流的開源框架為主Spring框架框架p 組成 Spring 框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯(lián)合實現(xiàn)p 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規(guī)范與實際應用程序代碼分開p Spring 上下文

13、:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業(yè)服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調度功能p Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現(xiàn)。通過策略接口,MVC 框架變成為高度可配置的,MVC 容納了大量視圖技術Spring框架和框架和EJBp Spring框架實際上大量參考了EJB的設計理念,只是Spring擯棄了EJB開發(fā)中的3大煩瑣之處:(1)EJB組件的接口和類必須繼承指定接口或類(2)需要大量使用XML配置文件(3)EJB組件必須打包成JAR包p Spring容

14、器取代了原有的EJB容器,因此以Spring框架為核心的應用無須EJB容器支持,可以在Web容器中運行p Spring容器管理的不再是復雜的EJB組件,而是POJO(Plain Old Java Object) BeanEJB的體系結構的體系結構p請求EJB構件服務的應用程序,EJB規(guī)約為創(chuàng)建EJB構件的客戶接口定義了一套標準,主要包括:pEJB Home接口:客戶使用JNDI來查找對EJB Home接口的引用,為客戶機創(chuàng)建、刪除、查找EJB Remote接口對象的句柄提供了相應的操作pEJB 業(yè)務接口:通過該接口可調用構件的業(yè)務方法pRMI/IIOP或RMI/JRMP協(xié)議:客戶機和容器通信的

15、標準協(xié)議,這些底層的分布式通信機制對于EJB客戶機和EJB構件開發(fā)者都是透明的EJB的體系結構的體系結構-EJB客戶機客戶機p為使用EJB構件的應用程序提供操作環(huán)境,并提供所有必要的服務來支持EJB體系結構pJava白皮書承諾:“EJB規(guī)約為每個支持Java程序的應用服務器定義了一個標準模型,任何廠商都可以使用此模型來實現(xiàn)對EJB構件的支持”pEJB服務器的主要功能包括p管理EJB容器p提供對操作系統(tǒng)服務的訪問p提供與Java相關的服務EJB的體系結構的體系結構-EJB服務器服務器pEJB容器為EJB構件提供運行環(huán)境,EJB容器對EJB應用程序是透明的pEJB白皮書描述:“EJB容器管理其中的

16、EJB構件,客戶機應用程序并不直接與EJB構件進行交互,相反,客戶機應用程序通過由容器生成的封裝接口與EJB構件進行交互,當客戶機使用封裝接口調用各種操作時,容器截獲每個方法調用,并插入管理服務”EJB的體系結構的體系結構-EJB容器容器EJB的體系結構的體系結構-EJB容器容器p面向對象p分布式計算:EJB構件在理論上是位置透明的p使用代理對象:客戶機訪問EJB構件時使用代理對象,構件本身對客戶機是不可訪問的EJB的編程模型的編程模型-關鍵特征關鍵特征EJB的邊界的邊界EJB構件接口構件接口p構件接口是構件提供者為便于復用者(客戶)復用該構件所提供的必要信息p構件與容器協(xié)作實現(xiàn)這些接口EJB

17、EJB構件規(guī)約構件規(guī)約EJB構件規(guī)約構件規(guī)約pEJB可使Java編寫的服務器組件開發(fā)和部署標準化pEJB構件規(guī)約定義了以下接口pEJB和容器之間的接口p容器和應用服務器之間的接口p容器和客戶端之間的接口p容器和持久管理器之間的接口EJB構件分類構件分類pEJB構件分為三(四)種基本的類型p會話構件(Session Bean)p有態(tài)會話構件(Stateless Session Bean)p無態(tài)會話構件(Statefull Session Bean)p消息驅動構件(Message-Driven Bean)p實體構件(實體構件(Entity Bean)會話構件會話構件p特征 p與單個客戶相對應p不直

18、接表示數(shù)據庫中的共享數(shù)據p生命周期相對較短p當EJB容器崩潰時,也隨著消失p類別pStateful (有態(tài))pStateless (無態(tài))有態(tài)構件的生命周期有態(tài)構件的生命周期PreDestroy超時postConstruct業(yè)務方法PrePassivatePostActivate超時實例拋出系統(tǒng)異常無態(tài)構件的生命周期無態(tài)構件的生命周期PreDestroyPostConstruct業(yè)務方法兩種會話構件的選擇兩種會話構件的選擇pStateful ? Stateless?p過程需要保持狀態(tài)?p加入過程中斷,恢復運行時需要以前的信息嗎?兩種會話構件的選擇兩種會話構件的選擇p發(fā)生下列情況時應該考慮使用有

19、狀態(tài)會話Beanp在方法調用時,會話Bean需要維護成員變量的數(shù)據p實例化會話Bean的時候,必須初始化會話Bean的狀態(tài)p會話Bean需要跨越多個方法調用,并維護客戶端的信息p會話Bean正在服務一個交互客戶端,EJB容器或應用服務器需要了解該客戶端p發(fā)生如下情況時應考慮使用無狀態(tài)會話Beanp不需要維護跨越方法調用的成員變量中的數(shù)據p會話Bean提供的服務并不針對某種客戶端消息驅動構件(消息驅動構件(MDB)pMDB是一種JMS消息的使用者,MDB負責從消息隊列或者消息主題中讀取消息pMDB只提供消息接受方法,客戶端不直接與MDB打交道pMDB的輸入參數(shù)只有一種類型,即消息對象,是那些實現(xiàn)

20、了Message接口的Java對象p生命周期由EJB容器控制p客戶端和MDB是完全獨立的,客戶端無法直接調用MDB方法,而是由消息服務器負責把消息發(fā)送給MDBp無狀態(tài)消息驅動構件(消息驅動構件(MDB)MDB的生命周期的生命周期PreDestroyPostConstructp客戶端可直接調用Session Bean,發(fā)布消息到主題pMDB接收并處理消息EJB構件開發(fā)與應用pSessionBean有兩個共同的組成部分:p業(yè)務接口(Business interface):定義EJB構件的邏輯方法pBean類(Bean class):實現(xiàn)主要的業(yè)務邏輯EJB構件的開發(fā)(構件的開發(fā)(SessionBe

21、an)p開發(fā)一個 SessionBean,需要定義接口和 Beanclass,接口分為遠程接口(Remote Interface)和本地接口(Local Interface)p遠程接口( Remote Interface)定義業(yè)務方法,可以被 EJB 容器之外的應用訪問到p本地接口(Local Interfac)同樣定義業(yè)務方法,可以被同處于 EJB 容器內的其它應用使用。因為 local 接口允許 bean 之間直接通過內存交互,沒有分布式對象協(xié)議的開銷,從而改善了性能pBean類包含了業(yè)務邏輯,必須具備一個遠程或本地接口,Bean類應實現(xiàn)接口的業(yè)務方法。在 EJB3中,不要求同時實現(xiàn) re

22、mote 和 local 接口,但實現(xiàn)兩者是比較好的做法開發(fā)開發(fā)SessionBeanp第一步:定義一個包含業(yè)務方法的接口。該接口不需要包含任何注釋,是一個普通的 java 接口。調用 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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論