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

首頁 > 學院 > 開發設計 > 正文

J2EE應用部署(一):基礎篇

2019-11-18 12:31:50
字體:
來源:轉載
供稿:網友

  提綱:
  一、基礎知識
  1.1 J2EE應用的構成
  1.2 封裝和部署操作的任務
  1.3 不能封裝到EAR文件的組件
  二、類裝載模式
  2.1 在EJB 2.0之前
  2.2 在EJB 2.0之后
  正文:
  一、基礎知識
  1.1 J2EE應用的構成
  J2EE應用由以下兩種資源構成:
  一個或者多個J2EE組件
  一個J2EE應用部署描述器(Deployment Descriptor)
  當多個異種的J2EE組件需要相互調用時,我們必須創建一個J2EE應用。在創建J2EE應用的過程中,有許多事情必須考慮,其中包括:
  有哪些類型的組件可以封裝到J2EE應用里?
  創建J2EE應用的過程中,人們擔負的各種職責。
  當前J2EE封裝技術的局限之處。
  為滿足J2EE組件交互的需要,不同的供給商所采取的類裝載策略。
  J2EE規范區分了兩類資源:可以在容器之內運行的資源,可以封裝到EAR文件內的資源。EAR是EnterPRise application ARchive的縮寫,EAR文件用來把一個或者多個J2EE組件封裝到單個模塊里面,以便一起部署并裝入到服務器上。
  J2EE規范闡明了運行時容器和部署模塊之間的區別。運行時容器是請求級的截取機制,為系統內的組件提供一種基礎服務。部署模塊是一種為那些最終將在運行時容器內執行的組件提供的封裝結構。下圖描述了J2EE容器的結構:
   J2EE應用部署(一):基礎篇
  其中:
  EJB容器
  EJB容器用來容納業務邏輯,并為業務邏輯截取請求。EJB容器支持EJB訪問JMS、JAAS、JTA、javaMail、JAXP、JDBC和連接器(Connector)。
  Web容器
  Web容器截取通過HTTP、FTP、SMTP或其他協議發送的請求。Web應用容器為Servlet和jsp頁面提供的資源與EJB容器提供的資源相同。
  應用客戶端容器
  客戶端應用是獨立的Java應用,它們在遠程的獨立JVM上運行(與Web容器和EJB容器所運行的JVM不同)。應用客戶端容器為這些應用截取請求。
  運行在應用客戶端容器上的程序非常類似于帶有main()方法的Java程序,不過,程序不再由JVM控制,而是由一個容器(也就是應用客戶端容器)控制。
  在應用客戶端容器內運行的程序能夠訪問遠程應用服務器上的JAXP、JDBC、JMS和JAAS資源。
  Applet容器
  Applet容器是一個非凡的容器,它為在瀏覽器內運行的Java程序截取請求。Applet容器不提供任何對其他資源(比如JDBC或JMS)的訪問。在Applet容器內運行的Applet必須自己直接向應用服務器請求資源(而不是把請求發送給容器,然后由容器發送請求給應用服務器)。
  對于Applet如何與EJB容器進行通信,EJB規范沒有作出任何規定,但J2EE規范有這方面的規定。對于那些想要直接使用EJB的Applet,J2EE規范要求它們使用HTTP隧道。許多應用服務器提供某種形式的HTTP隧道,支持Applet直接使用EJB。
  可以封裝到J2EE EAR文件里面的組件與包含容器的組件之間不存在直接的關聯。J2EE沒有規定EAR文件至少必須包含哪些內容,EAR文件可以由任意數量的以下組件構成:
  
  EJB應用JAR文件
  
  EJB應用JAR文件包含一個或者多個EJB組件。
  
  Web應用WAR文件
  
  一個WAR文件包含一個Web應用。EAR文件可以包含多個Web應用,EAR文件中的每個Web應用必須有一個唯一的部署上下文。EAR文件的部署機制答應指定這類不同的上下文。
  
  應用客戶端JAR文件
  
  應用客戶端JAR文件包含一個預備在應用客戶端容器內運行的獨立Java應用,還包含一個專用的部署描述器,其構成方式和EJB JAR文件的構成方式相似。
  
  應用客戶端JAR文件除了包含運行獨立客戶程序所需要的類之外,還包含訪問JDBC、JMS、JAXP、JAAS和EJB客戶所需要的客戶端庫。
  
  資源適配器RAR文件
  
  資源適配器RAR文件包含了實現企業信息系統JCA(Java Connector Architecture)資源適配器所需要的Java類和本地庫。
  
  資源適配器不在容器內執行。相反,它們應該作為應用服務器和外部企業信息系統之間的橋接軟件執行。
  
  這些組件都在J2EE EAR文件之外分別地開發和打包,且分別擁有自己的部署描述器。然后,J2EE EAR文件通過定制的部署描述器,把一個或者多個這種組件裝配成一個統一的包。
  
  1.2 封裝和部署操作的任務
  
  在EJB、Web應用或其他組件的構造、部署和使用過程中,不同的人擔負著不同的職責。J2EE規范為開發者在創建企業應用過程中的職責定義了范圍廣泛的平臺角色(Platform Role)。盡管角色的數量眾多,但它們不外乎是一種為了更好地規劃和運行一個應用而設計的邏輯劃分,單獨的個人、小組或組織很可能扮演多個角色。在構造、部署使用EAR文件的過程中,常見的角色包括:
  
  J2EE產品提供者
  
  負責實現J2EE平臺,包括在規范中定義的所有J2EE API和其他功能。比如,J2EE應用服務器的供給商。
  
  應用組件提供者
  
  負責提供J2EE組件,例如EJB應用或Web應用。J2EE規范中的許多角色都具有應用組件提供者的特征,比如文檔編寫者、JSP頁面編寫者、資源適配器開發者等。
  
  應用組裝者
  
  負責把一個或者多個J2EE組件打包成EAR文件,構造出J2EE應用。應用組裝者還要負責創建J2EE應用部署描述器,說明應用依靠的各種外部資源,比如類庫、安全角色等。通常,應用組裝者要用到J2EE產品提供者和工具提供者提供的工具。
  
  工具提供者
  
  提供自動化J2EE應用創建、打包、部署過程的工具,例如為EAR文件自動生成部署描述器的工具,自動創建EAR文件的工具。
  
  部署者
  
  負責把Web應用和EJB應用部署到服務器環境上。部署者不負責部署資源適配器包和應用客戶端包,但可能要負責為這些組件進行額外的配置。這些組件雖然被打包成為J2EE EAR文件的一部分,部署企業應用時卻不必考慮。它們是J2EE應用的一部分,但不必象Web應用和EJB容器那樣經過一個“激活”過程。資源適配器包是置入合法JCA實現的簡單庫,雖然它們被打包進J2EE EAR文件,但它們不在J2EE容器環境下運行。因此,由于資源適配器包不包含J2EE容器,它們的激活不需要J2EE部署者的非凡干預。應用客戶端程序在J2EE容器的環境下運行,但它們不部署到應用服務器上。客戶端程序獨立運行,部署者不負責為這些程序配置容器環境。
  
  系統治理員
  
  負責為應用服務器和J2EE應用配置網絡和運行環境,負責監視和維護J2EE應用的運行。
  
  在本文的討論過程中,我們主要的角色是應用組裝者和部署者。
  
  1.3 不能封裝到EAR文件的組件
  
  大多數基于Web的J2EE應用只由Web和EJB應用構成,EAR文件能夠滿足封裝應用的基本需求。然而,EAR文件缺乏封裝復雜J2EE應用的能力,比如,J2EE經常要用到下面這類組件,但它們無法在EAR文件中聲明:
  JDBC DataSource對象。
  JMS ConnectionFactory和Destination對象。
  JMX(Java Management Extension)的MBean。
  在應用服務器之內運行的一些JMS消費者,例如作為Serversession一部分運行的MessageConsumer。
  當應用被部署或卸載時觸發運行的一些類(這些類是供給商提供的私有擴展,沒有在J2EE規范中定義,但供給商一般都提供它們)。
  當前,這些組件必須由系統治理員通過專用治理接口手工配置和部署。隨著時間的推移,這些組件的應用也將日益增加,為了支持應用的整體移植性,讓EAR文件支持這些組件的封裝也變得日益重要。
  二、類裝載模式
  當一個類被引用時,Java虛擬機(JVM)必須裝入被引用的類。JVM利用一個標準的類裝入機制把類裝入內存,這個從源文件裝入Java類的機制稱為類裝載器。Java類可以從磁盤、網絡或其他媒體裝入,它們可以駐留在任何地方。多個類裝載器可以按照父-子關系鏈接在一起,形成一種層次結構。由子類裝載器裝入的類能夠看到(能夠使用)由任意父類裝載器裝入的類;由父類裝載器裝入的類不能看到由任意子類裝載器裝入的類。類裝載器、EAR文件與應用部署有著重要關系,因為應用服務器可能采用專用的類裝載器部署應用模塊。
  假如在一個系統中,Web應用需要訪問某個EJB,它就必須能夠裝入它所需要的那些類。由于這意味著不同模塊之間的依靠關系,為了解決依靠問題,應用服務器必須為EAR類裝載器考慮不同的結構方案。
  獨立的應用程序部署在它自己的類裝載器中。這意味著,假如分別地部署一個Web應用和一個EJB應用,每個應用的類將分別裝入各自的、級別相同的類裝入器,Web應用內的類不能看到另一個類裝載器裝入的類。假如Web應用想要使用那些分開部署的EJB,就會出現問題。
  在EAR文件出現之前,許多開發者先部署EJB,然后以Web應用WEB-INF/lib目錄一部分的形式,再次封裝同一EJB JAR文件。這樣,同一類文件必須放入兩個不同的地方,才能讓應用正常地運行。顯然,這是一種應當避免的情形。EAR文件的引入就是為了解決這個問題。EAR文件不僅是一種方便的封裝格式,而且它還提供了一種非凡的類裝載模式,答應EAR文件內的應用訪問其他應用的類。
  J2EE 1.3規范沒有具體規定EAR類裝載器應該如何運作。在決定類裝入方式時,應用服務器供給商有著很大的自由。實現EAR類裝載器之前,供給商必須決定:
  EAR文件中所有應用的所有類由單一的類裝載器裝入,還是不同應用的文件由不同的類裝載器裝入?
  在EAR文件中的不同應用之間,是否存在類裝載器的父-子關系?例如,假如兩個EJB應用依靠于log4j.jar,那么,是否應該由父類裝載器裝入log4j.jar,由子類裝載器裝入兩個EJB應用,從而維持適當的可見性關系?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镶黄旗| 交口县| 新宁县| 辰溪县| 洛浦县| 衡水市| 奉化市| 和龙市| 塘沽区| 永顺县| 盐城市| 峨边| 永善县| 林芝县| 东平县| 凌云县| 响水县| 南宫市| 永顺县| 准格尔旗| 许昌县| 云南省| 丽水市| 天门市| 徐闻县| 封开县| 赣榆县| 石林| 昂仁县| 南溪县| 平安县| 武冈市| 临高县| 浮梁县| 东乡族自治县| 普兰店市| 车致| 镇沅| 清徐县| 奈曼旗| 宕昌县|