




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
哈爾濱工業大學計算機學院唐好選Email:tanghx@JavaEE的基本原理及
構件開發技術基本內容JavaEE概述EJB技術基于EJB構件的開發過程三種構件模型的關系J2EE概述J2SE(Java2Platform,StandardEdition)用于桌面程序和Java小程序開發稱為J2SDK,簡稱JDKJ2EE(Java2Platform,EnterpriseEdition)用于企業級開發稱為J2SDKEEJ2ME(Java2Platform,MicroEdition)用于手持設備的開發(手機和PDA)JRE(JavaRuntimeEnvironment)Java平臺的發展Java平臺的發展JavaEE的發展J2EE1.01999年發布J2EE1.22000年發布J2EE1.32001年發布J2EE1.42003年發布J2EE1.52005年發布,即JavaEEJavaEE1.62009年發布JavaEE1.7-2013年發布,最新版JavaEE
1.7的核心組件JavaEE應用架構示例(1)JavaEE應用架構示例(2)JavaEE核心技術瀏覽器Applet應用程序客戶機RMIWeb/HTTP服務器JSP/JSFServlet表示層應用服務器EJBEJBEJBEJBEJBEJBEJBJavaIDLJNDIJMSJPA專業服務層遺產系統數據庫分布式CORBA對象后端系統JavaEE核心技術(1)EJB(EnterpriseJavaBean)提供了讓客戶端使用遠程的分布式對象的框架規定了EJB構件如何與EJB容器進行交互EJB容器提供了目錄服務、事務管理、安全、連接池管理和容錯服務等RMI(RemoteMethodInvocation)和RMI-IIOP是EJB構件和客戶端的通信API允許進程間通信并提供其它與通信相關的服務利用IIOP作為通信協議JNDI(JavaNamingandDirectoryInterface)是命名和目錄服務的標準實現對象的命名,包括Web組件、EJB組件、數據庫系統等對象的名字通過命名和目錄服務綁定到具體對象EJB依賴JNDI通過網絡查找分布式構件在JavaEE環境下,任何構件必須在JNDI服務器注冊JPA(JavaPersistenceAPI)用于對象持久化的API,本質上是一種ORM規范支持XML和注解通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的SQL語句緊密耦合JavaEE核心技術(2)JTA(JavaTransactionAPI)是一個高層次的事務處理接口應用程序可通過JTA控制事務處理JMS(JavaMessageServices)是與消息驅動構件通訊的API同時支持點對點消息隊列服務和發布-訂閱消息服務支持可靠消息傳遞、消息傳遞事務及持續消息等是EJB消息驅動Bean的基礎JavaEE核心技術(3)JSP(JavaServerPage)和Servlet是服務器端的程序用于擴展服務器功能,響應用戶請求可將結果轉化為標準的HTML代碼返回給用戶JSF(JavaServer
Faces)用于構建Web應用程序的新標準Java框架提供一種以組件為中心來開發Java
Web用戶界面的方法將Web應用開發者劃分為三個角色:網頁設計人員;應用程序設計人員;UI組件開發人員JavaEE核心技術(4)WebSocketAPI是下一代客戶端-服務器的異步通信方法,取代了單個TCP套接字,可用于任意的客戶端和服務器程序,由W3C進行標準化WebSocketAPI可使服務器和客戶端可以在給定時間范圍內的任意時刻,相互推送信息WebSocket并不限于以Ajax(或XHR)方式通信,服務器和客戶端可以彼此相互推送信息WebSocket允許跨域通信
JavaIDL/CORBA是CORBA規約的一種Java實現通過JavaIDL可以讓Java對象發布到CORBA的ORB上,從而通過ORB與別的CORBA對象進行交互JavaEE核心技術(5)Interceptors(攔截器)在訪問某個Action或Action的某個方法之前或之后實施攔截攔截器是可插拔的,是AOP的一種實現JAF(JavaActivationFramework)/JavaMail是一套允許在Java程序中以與平臺無關、協議無關的方式發送電子郵件的APIJavaMail可利用JAF處理郵件的編碼XML(可擴展標記語言)是一種描述數據的元語言Java用JAXP(JavaAPIforXMLParsing)對XML文件進行解析EJB通常將XML作為元標記語言表達內容JavaEE核心技術(6)EJB技術EJB技術EJB簡介EJB體系結構EJB編程模型EJB構件接口EJB構件規約EJB構件分類EJB構件的開發什么是EJB?EJB不是一種產品,而是為開發和使用“基于事務和分布對象應用的服務器端構件”而定義的一種技術規約,用戶可根據該規約開發EJB構件EJB構件是一組分布式的對象,可通過EJB容器的控制為分布在因特網上的用戶提供遠程服務什么是EJB?EJB規約定義了EJB構件與EJB容器之間的交互機制,描述了EJB構件和EJB容器在運行時的行為,保證了EJB構件在容器間的可移植性安全訪問如何檢驗事務如何管理持久性如何應用EJB容器運行在EJB服務器中,EJB規約還定義了EJB容器和EJB服務器的標準模型EJB的目標EJB的目標是為服務器端構件系統定義一個技術規范,該規范可實現如下要求:提供一個標準的、分布的、基于OO的體系結構屏蔽復雜的系統級功能需求兼容CORBA標準具有與非Java應用之間的互操作能力EJB的現狀-EJB3.0EJB3.0于2006年5月隨JAVAEE5發布EJB3.0完全拋棄了EJB2.x實體Bean的設計,僅僅保留原有的SessionBean和消息驅動Bean;引進了全新的JPA規范作為持久化解決方案簡化了EJB2.x中SessionBean的開發,SessionBean不再需要Home接口,只要求提供遠程或本地的業務接口即可不再推薦使用XML文件作為部署描述文件,而是改為使用Annotation來設置部署描述信息EJB的現狀-EJB3.1EJB3.1于2009年隨JAVAEE1.6發布允許企業Bean只提供一個Bean類,甚至無須提供業務接口允許通過異步的方式調用SessionBean的業務方法簡化了EJB的類文件必須打包到JAR文件中的限制,允許直接將EJB類放到WAR文件中EJB的現狀-EJB3.2EJB3.2于2013年7月隨JAVAEE7發布支持本地異步會話Bean調用JavaI/O訪問權已放寬,用“應謹慎行事”取代了“不允許”有狀態會話bean的生命周期回調攔截方法,可以在一個事務環境中執行(由生命周期回調方法的事務屬性決定)可以完全禁用特定的有狀態會話bean的鈍化TimerServiceAPI已被擴展,可以在同一個EJB模塊中查詢所有活動計時器會話bean指定實現接口(作為本地或遠程業務接口)的默認規則已經放寬,可以包含多個接口JavaEE的應用架構-經典JAVAEE架構以EJB為核心,前端以JSF(JavaServerFaces)為MVC框架的技術架構,這種技術架構以Sun提倡的官方JavaEE技術為主JavaEE的應用架構-輕量級JavaEE架構以Spring+Hibernate為核心,前端以Struts1或Struts2為MVC框架的技術架構,這種技術架構以主流的開源框架為主Spring框架組成Spring框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯合實現核心容器:核心容器提供Spring框架的基本功能。核心容器的主要組件是BeanFactory。BeanFactory使用控制反轉(IOC)模式將應用程序的配置和依賴性規范與實際應用程序代碼分開Spring上下文:Spring上下文是一個配置文件,向Spring框架提供上下文信息。Spring上下文包括企業服務,例如JNDI、EJB、電子郵件、國際化、校驗和調度功能SpringMVC框架:MVC框架是一個全功能的構建Web應用程序的MVC實現。通過策略接口,MVC框架變成為高度可配置的,MVC容納了大量視圖技術Spring框架和EJBSpring框架實際上大量參考了EJB的設計理念,只是Spring擯棄了EJB開發中的3大煩瑣之處:(1)EJB組件的接口和類必須繼承指定接口或類(2)需要大量使用XML配置文件(3)EJB組件必須打包成JAR包Spring容器取代了原有的EJB容器,因此以Spring框架為核心的應用無須EJB容器支持,可以在Web容器中運行Spring容器管理的不再是復雜的EJB組件,而是POJO(PlainOldJavaObject)
BeanEJB的體系結構請求EJB構件服務的應用程序,EJB規約為創建EJB構件的客戶接口定義了一套標準,主要包括:EJBHome接口:客戶使用JNDI來查找對EJBHome接口的引用,為客戶機創建、刪除、查找EJBRemote接口對象的句柄提供了相應的操作EJB業務接口:通過該接口可調用構件的業務方法RMI/IIOP或RMI/JRMP協議:客戶機和容器通信的標準協議,這些底層的分布式通信機制對于EJB客戶機和EJB構件開發者都是透明的EJB的體系結構-EJB客戶機為使用EJB構件的應用程序提供操作環境,并提供所有必要的服務來支持EJB體系結構Java白皮書承諾:“EJB規約為每個支持Java程序的應用服務器定義了一個標準模型,任何廠商都可以使用此模型來實現對EJB構件的支持”EJB服務器的主要功能包括管理EJB容器提供對操作系統服務的訪問提供與Java相關的服務EJB的體系結構-EJB服務器EJB容器為EJB構件提供運行環境,EJB容器對EJB應用程序是透明的EJB白皮書描述:“EJB容器管理其中的EJB構件,客戶機應用程序并不直接與EJB構件進行交互,相反,客戶機應用程序通過由容器生成的封裝接口與EJB構件進行交互,當客戶機使用封裝接口調用各種操作時,容器截獲每個方法調用,并插入管理服務”EJB的體系結構-EJB容器EJB的體系結構-EJB容器面向對象分布式計算:EJB構件在理論上是位置透明的使用代理對象:客戶機訪問EJB構件時使用代理對象,構件本身對客戶機是不可訪問的EJB的編程模型-關鍵特征EJB的邊界EJB構件接口構件接口是構件提供者為便于復用者(客戶)復用該構件所提供的必要信息構件與容器協作實現這些接口EJB構件規約EJB構件規約EJB可使Java編寫的服務器組件開發和部署標準化EJB構件規約定義了以下接口EJB和容器之間的接口容器和應用服務器之間的接口容器和客戶端之間的接口容器和持久管理器之間的接口EJB構件分類EJB構件分為三(四)種基本的類型會話構件(SessionBean)有態會話構件(StatelessSessionBean)無態會話構件(StatefullSessionBean)消息驅動構件(Message-DrivenBean)實體構件(EntityBean)會話構件特征與單個客戶相對應不直接表示數據庫中的共享數據生命周期相對較短當EJB容器崩潰時,也隨著消失類別Stateful(有態)Stateless(無態)有態構件的生命周期@PreDestroy超時@postConstruct業務方法@PrePassivate@PostActivate超時實例拋出系統異常無態構件的生命周期@PreDestroy@PostConstruct業務方法兩種會話構件的選擇Stateful?Stateless?過程需要保持狀態?加入過程中斷,恢復運行時需要以前的信息嗎?兩種會話構件的選擇發生下列情況時應該考慮使用有狀態會話Bean在方法調用時,會話Bean需要維護成員變量的數據實例化會話Bean的時候,必須初始化會話Bean的狀態會話Bean需要跨越多個方法調用,并維護客戶端的信息會話Bean正在服務一個交互客戶端,EJB容器或應用服務器需要了解該客戶端發生如下情況時應考慮使用無狀態會話Bean不需要維護跨越方法調用的成員變量中的數據會話Bean提供的服務并不針對某種客戶端消息驅動構件(MDB)MDB是一種JMS消息的使用者,MDB負責從消息隊列或者消息主題中讀取消息MDB只提供消息接受方法,客戶端不直接與MDB打交道MDB的輸入參數只有一種類型,即消息對象,是那些實現了Message接口的Java對象生命周期由EJB容器控制客戶端和MDB是完全獨立的,客戶端無法直接調用MDB方法,而是由消息服務器負責把消息發送給MDB無狀態消息驅動構件(MDB)MDB的生命周期@PreDestroy@PostConstructMDB常用開發模式客戶端可直接調用SessionBean,發布消息到主題MDB接收并處理消息EJB構件開發與應用SessionBean有兩個共同的組成部分:業務接口(Businessinterface):定義EJB構件的邏輯方法Bean類(Beanclass):實現主要的業務邏輯EJB構件的開發(SessionBean)開發一個SessionBean,需要定義接口和Beanclass,接口分為遠程接口(RemoteInterface)和本地接口(LocalInterface)遠程接口(RemoteInterface)定義業務方法,可以被EJB容器之外的應用訪問到本地接口(LocalInterfac)同樣定義業務方法,可以被同處于EJB容器內的其它應用使用。因為local接口允許bean之間直接通過內存交互,沒有分布式對象協議的開銷,從而改善了性能Bean類包含了業務邏輯,必須具備一個遠程或本地接口,Bean類應實現接口的業務方法。在EJB3中,不要求同時實現remote和local接口,但實現兩者是比較好的做法開發SessionBean第一步:定義一個包含業務方法的接口。該接口不需要包含任何注釋,是一個普通的java接口。調用EJB的客戶端使用這個接口引用從EJB容器返回的存根(stub)開發SessionBean第一步第二步:編寫BeanClass開發SessionBean第二步SessionBean的客戶端開發publicstaticvoidmain(String[]args){ Propertiesprops=newProperties(); props.setProperty("java.naming.factory.initial","erfaces.NamingContextFactory"); props.setProperty("vider.url","localhost:1099");try{ InitialContextctx=newInitialContext(props); HelloWorldhelloworld=(HelloWorld)ctx.lookup("HelloWorldBean/remote"); System.out.println(helloworld.sayHello(“哈工大"));}catch
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 14 家鄉物產養育我 公開課一等獎創新教學設計 (第1課時表格式)
- 2025年度全國安全生產網絡知識競賽題庫及答案(共四套)
- 人教版小學二年級上冊數學 第6單元 第3課時 解決問題 教案
- 2025標準版工程保理合同
- 2025委托購買合同范本
- 停車場管理系統升級合同書模板
- 離婚協議中的孩子戶籍遷移:合同范文
- 2025年中學學校物業管理合同范本
- 2025綜合合同范本匯編
- 2025監理工程師《合同管理》知識點合同違約責任
- 2024-2025學年人教版數學八年級下冊期中檢測卷(含答案)
- 江蘇省南京市聯合體2023-2024學年七年級下學期期中英語試卷
- 高中地理·第一節人類面臨的主要環境問題幻燈片
- 擬經營的食品種類、存放地點
- 益生菌與健康課件
- 2022醫學課件醫院獲得性肺炎(HAP)診治指南最新綜述(精)
- 如何提高小學數學課堂教學地有效性講座
- 05 【人教版】七年級下期中數學試卷(含答案)
- GB_T 31148-2022木質平托盤 通用技術要求_(高清-最新版)
- 固體物理(黃昆)第一章
- 認識餐飲環境(課堂PPT)
評論
0/150
提交評論