EJB开发体会
臨時得到學院的通知,讓我在5秒鐘之內想出一門研究生的選修課程,大腦都不帶停留的,脫口而出“軟件新技術及應用”。等到開始上課,才發現備課之艱難,備了今天愁明天,不過也好,乘機把涉及J2EE的技術可以完整的來梳理一遍,其中EJB的開發也是我的課程計劃中的一個主要內容。
?
一個良好的講課效果的前提之一是自己對知識點的熟悉,因此,我必須對EJB的開發有一個基本的了解。幸好,有一些參考書和網上的資源幫助我能夠較快的掌握EJB的開發。
?
從一些資料上介紹以及根據自己的實際的開發經驗,EJB在工程中的應用很少,也許是我的一個錯覺吧,其中很多文章指責EJB規范太沉重,號稱重量級的,倒是一些輕量級的框架如Hibernate、spring等被廣泛應用。但是無論如何,EJB作為分布式組件的標準,肯定有它的強大優勢。
?
首先我想從原理上根據我的理解來闡述一下EJB標準。J2EE作為分布式計算的規范,其中的核心就是EJB標準,EJB定義了組件的分布式計算,其基礎(infrastructure)是RMI技術,考慮到和CORBA的集成,EJB的實際通信協議是RMI-IIOP,IIOP是CORBA的通信協議。EJB規范為訪問異構的分布式組件提供了一個統一的平臺,同時也為客戶開發EJB組件提供了標準。在設計EJB的組件架構方面,采用了EJB容器的方式,原因是因為開發一個分布式組件除了需要實現其業務功能以外,還需要考慮其他的非業務因素,如:安全性、組件的生命周期管理、多用戶訪問、負載均衡、事務、緩存、動態部署等等,這些因素和業務功能在邏輯區分上處于正交(orthodoxy)狀態,也就是兩者毫不相關,但是每實現一個EJB組件必須要考慮這些因素。EJB容器的目的就是為了解決這些非功能因素,而容器的開發往往是需要很高的技術含量,通常由專業公司來實現,如:JBOSS、WebLogic、GlassFish等應用服務器都提供了EJB容器,而作為應用開發者,基于容器開發EJB組件只需考慮業務邏輯的實現,簡化了開發的復雜性。從這個角度出發,軟件產業可以mapping為一個生態系統(ecosystem),不同的人員開發不同的產品,從而形成一個所謂的軟件生態鏈。
?
很多學習EJB的人都會問過一個問題,EJB怎么來的?當然我也不例外。為了這個問題,我查閱了一些資料,原來最初J2EE規范出臺后,其競爭對手.Net的技術人員就指出J2EE的不足,原來早期的J2EE規范沒有很好的解決緩存這一問題。java雖然通過JVM實現了跨平臺,但是也因為是虛擬機帶來了效率的問題,其中影響性能的瓶頸在于序列化,如把內存的數據寫到數據庫基表或者從基表中讀取記錄,這些操作都需要大量的CPU計算資源,頻繁的進行這樣的操作會嚴重的降低系統性能,而.Net很好的解決了這個問題。EJB是在這個背景下提出的,其目的是提供緩存機制,即把基表中的記錄映射到內存,應用對數據的操作通過內存實現,從而提供系統效率。目前EJB分3大類:實體EJB、會話EJB、消息驅動EJB,所以根據我的理解,實體EJB應該是排在第一位的,它實現的數據庫記錄和內存對象的映射關系。
?
我目前開發的EJB是基于JBOSS、glassfish應用服務器,采用myeclipse開發工具。開發EJB需要了解的兩個技術是:RMI和JNDI。?????? (有些晚了,改天再寫,to be continued)
總結
- 上一篇: 《黑客防线》《黑客X档案》《非安全-黑客
- 下一篇: 神经网络-张量