国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

J2EE到底是什么?

2019-11-18 12:30:34
字體:
供稿:網(wǎng)友

  J2EE到底是什么?
  
  
  
  
  
  目前所有的B/S系統(tǒng)應(yīng)用可以分為:有狀態(tài)(statefull)和無狀態(tài)(stateless)兩大類別。 有狀態(tài)是指在整個系統(tǒng)的處理過程中要保留記住一些信息,而無狀態(tài)則相反,每次request都是獨立的連接,不需要在每個request之間共享數(shù)據(jù)等等。
  
  
  
  對于這兩種應(yīng)用,通常第一考慮是性能要最優(yōu),性能是我們選擇IT技術(shù)的主要依據(jù)之一。
  
  
  
  為達(dá)到最大化的性能,對于java系統(tǒng),以前通常的作法是使用對象池,這樣節(jié)約對象生成時的性能開銷,也就是說系統(tǒng)啟動時,預(yù)先生成一定數(shù)目的對象實例在內(nèi)存中,需要使用時,從對象池中取出實例,用完,歸還對象池,對于有狀態(tài)的應(yīng)用,可以使用相關(guān)持久化(persistence)策略來保存狀態(tài)。
  
  
  
  下一步,如何并行訪問對象池將是非常重要,java的多線程技術(shù)為我們提供了實現(xiàn)可能,線程的創(chuàng)建銷毀也是可能非常耗時的,那么,無疑象使用對象池一樣,我們必須使用線程池來實現(xiàn)多線程并行計算的最優(yōu)化。
  
  
  
  使用線程池和對象池,每次客戶端請求發(fā)生一次就從線程池中借用一個線程,處理完這個請求就將線程返回線程池,同樣,使用線程快速的訪問對象,對象也是從對象池中借用,用完就還回對象池。 整個這樣的架構(gòu)設(shè)計在性能上是最優(yōu)的。
  
  
  
  有了性能保證,安全機(jī)制、事務(wù)機(jī)制、集群(cluster)技術(shù)也將是選擇IT技術(shù)的主要依據(jù)。
  
  
  
  J2EE就是這樣一個實現(xiàn)上述多種考量的綜合標(biāo)準(zhǔn)框架系統(tǒng),在具體使用中,也許我們對所有這些考量的要求并不都一樣重視,比如:假如純粹追求性能是第一,可以忽視事務(wù)機(jī)制,那么,完整的J2EE技術(shù)也許就并不適合你。
  
  
  
  那么我們先看看J2EE是如何從性能上保證我們的應(yīng)用系統(tǒng)以最快速度運行的,也就是說J2EE中必然應(yīng)該有上述線程池和對象池的實現(xiàn)技術(shù),servlet實際是基于線程池的更好的線程容器;EJB是基于對象池的更好的對象容器。
  
  
  
  看看Servler的架構(gòu)圖:
  
  
  
  
  
  
  
   
  
  
  
  當(dāng)client1發(fā)生請求時servlet容器會從線程池中分配一個線程給這個request.
  
  
  
  
  
  再看看EJB的架構(gòu)圖:
  
  
  
  
  
  
  
  instance Pool作為一個對象實例池,維持著EJB實例,當(dāng)然這個對象池是用生命周期的,簡單的說 EJB=對象池+遠(yuǎn)程對象池
  
  
  
  但是,EJB還整合了相當(dāng)?shù)钠渌鰪?qiáng)功能,如安全 事務(wù)機(jī)制等,這些對于一般應(yīng)用都是必需的,當(dāng)然你還必須根據(jù)你的需要來選擇是否使用J2EE,假如你的應(yīng)用對安全 事務(wù)機(jī)制沒有要求,直接使用線程池和對象池技術(shù)肯定獲得最好的性能。
  
  
  
  所以,根據(jù)Servler和EJB的原理,我們已經(jīng)可以規(guī)劃我們的應(yīng)用,什么可以放在servlet,或什么需要放在EJB中實現(xiàn):
  
  
  
  線程的本質(zhì)決定了servlet只適合一些輕量的應(yīng)用,如分析簡單xml文檔, 通過JDBC訪問數(shù)據(jù)源,使用JMS或JavaMail處理簡單的信息Message,或使用JTS/JTA處理簡單的事務(wù)機(jī)制,注重這些用詞都是"簡單"的,一旦復(fù)雜了,就要使用EJB了。
  
  
  
  下面從客戶端和服務(wù)器端兩個方面來具體考量這兩個技術(shù)的使用,這里的客戶端不一定是指最終客戶端,因為J2EE是多層結(jié)構(gòu),中間層可能在多個服務(wù)器上實現(xiàn),假如一個服務(wù)器上的服務(wù)是供另外一個服務(wù)器上的應(yīng)用訪問的,那么后者我們也稱為客戶端。
  
  
  
  根據(jù)應(yīng)用的復(fù)雜程度和要求不同,分下列情況:
  
  
  
  1.在WEB層可以實現(xiàn)的一些應(yīng)用
  
  
  
  假如你的系統(tǒng)沒有很復(fù)雜的事務(wù)處理,或訪問很多企業(yè)原有的資源,那么可以借助javabean這樣的一些Help性質(zhì)的類來實現(xiàn)你的應(yīng)用,但是,這樣的方案不是最干凈clean, 最有效efficient, 或最有擴(kuò)展性的scalable。
  
  
  
  否則,將所有核心計算放置入EJB中。
  
  
  
  2.所有的復(fù)雜商務(wù)計算核心都在EJB中完成
  
  
  
  假如你的客戶端和服務(wù)器端之間有防火墻,那么目前能夠無障礙通過防火墻的協(xié)議只有Http了(Web Service也是基于http就是這個道理),既然使用http了,而Servlet是基于Http協(xié)議的,那么就需要通過servlet來訪問EJB,這是我們最普遍的應(yīng)用情況。
  
  
  
  但是,假如你的客戶端和服務(wù)器端可以放置在一個網(wǎng)絡(luò)內(nèi),之間沒有防火墻,那么就不必使用Servlet,直接使用Java調(diào)用RMI來訪問EJB,這樣性能是最好的,這時的Servlet大概只有用于控制jsp的頁面的輸出了(MVC模式中的控制作用)。
  
  
  
  假如是非java客戶端,可以通過CORBA組件來訪問EJB。
  
  
  
  3.假如你的應(yīng)用對速度要求很高,要求非常快,對于事務(wù)處理等方面幾乎無要求
  
  
  
  直接使用J2SE,加上線程池和對象池技術(shù),將會使你的java系統(tǒng)性能發(fā)揮極致。Jakarta.Apache.org有這兩種技術(shù)的源碼,線程池可以從Servlet容器Tomcat的源碼中發(fā)現(xiàn)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 苍溪县| 府谷县| 灵石县| 青海省| 西贡区| 台中市| 宁远县| 夏邑县| 汕尾市| 常熟市| 铜梁县| 津南区| 宾川县| 朔州市| 临汾市| 北安市| 收藏| 宜阳县| 邹平县| 台湾省| 巴彦淖尔市| 华阴市| 汉中市| 抚顺县| 苏州市| 江北区| 陇西县| 裕民县| 房产| 通辽市| 当涂县| 罗山县| 壶关县| 辽阳市| 乡城县| 奉新县| 班玛县| 遵化市| 新干县| 安溪县| 西昌市|