Java EE架構概述
阿新 • • 發佈:2018-12-16
主要內容
- 分散式多層應用
- Java EE容器
- Web Service支援
- 打包應用
- 開發角色
- Java EE APIs
引子
- Java Platform, Enterprise Edition(Java EE)為設計、開發、裝配和部署企業應用程式提供了一個基於元件的方法
- Java EE平臺提供了:
- 一個多層分散式應用模型
- 可複用元件模型
- 一個統一的安全模型
- 靈活的事務控制
- Web Services
- 通過Java EE平臺,可以
- 更快地構建創新的商業解決方案
- 基於Java EE元件的平臺獨立性,使開發的應用不依賴於特定廠商的產品和API
- 軟體廠商和客戶都能自由地選擇符合其需求的產品和元件
分散式多層應用
- 應用邏輯按照功能分成若干元件,組成Java EE應用的各種應用元件按照多層Java EE環境中的層次結構,安裝在不同的機器上。
- 安全
- 在每個應用中使用平臺無關的安全策略
- 允許在部署時定義安全約束
- 應用程式能夠在多種安全實現上移植
- 對應用開發者遮蔽實現安全特性的複雜性
- Java EE平臺提供了標準的宣告式訪問控制規則,可由開發者定義並在應用部署到伺服器時解釋
- Java EE提供了標準的登入機制,開發者可以不用重複開發
- Java EE元件
- A Java EE component is a self-contained functional software unit that is assembled into a Java EE application with its related classes and files and that communicates with other components.
- Java EE規範定義瞭如下元件:
- 應用客戶端(application clients)和Applets是客戶端執行的元件
- Servlet和JSP元件是伺服器上執行的web元件
- Enterprise JavaBeans (EJB)元件是伺服器上執行的業務元件
- Java EE客戶端
- Web客戶端 → thin client
- 動態Web頁面:由Web層執行的web元件生成
- Web瀏覽器:顯示頁面
- Applet
- 應用客戶端 → richer user interface
- 直接訪問企業Beans
- 開啟HTTP連線,與Web層的servlet通訊
- JavaBeans元件
- 瘦客戶端可提升應用的可分佈性、可部署性和可管理性,而富客戶端可獲得良好的使用者體驗。
- Web客戶端 → thin client
- 伺服器通訊
- Web元件
- Servlet
- Servlets are Java programming language classes that
dynamically process requests and construct responses.
- Servlets are Java programming language classes that
- JSP
- JSP pages are text-based documents that execute as servlets but allow a more natural approach to creating static content.
- JavaBeans (optional)
- Servlet
- 業務元件
- Session beans
- A session bean represents a transient conversation with a client. When the client finishes executing, the session bean and its data are gone.
- Entity beans
- An entity bean represents persistent data stored in one row of a database table. If the client terminates or if the server shuts down, the underlying services ensure that the entity bean data is saved.
- Message-driven beans
- A message-driven bean combines features of a session bean and a Java Message Service (JMS) message listener, allowing a business component to receive JMS messages asynchronously.
- A message-driven bean combines features of a session bean and a Java Message Service (JMS) message listener, allowing a business component to receive JMS messages asynchronously.
- Session beans
- EIS (Enterprise Information System) 層
- ERP
- 資料庫系統
- 遺產系統
- ……
Java EE容器
- 為什麼需要容器?
- 瘦客戶端多層應用程式開發面臨的難題
- 事務管理
- 狀態管理
- 多執行緒
- 資源池
- 其它複雜的底層細節
- Java EE伺服器對所有型別的元件,以容器的形式提供了一組底層服務。開發者不需重複開發,而只需關注業務問題
- 瘦客戶端多層應用程式開發面臨的難題
- 容器服務
- 容器是一個元件和支援元件的底層平臺特定功能之間的介面
- Web元件、企業Bean、應用客戶端元件必須組裝成Java EE模組並部署於容器中才能執行
- 組裝過程包括
- 為Java EE應用中每個元件定義容器方面的設定
- 為Java EE應用本身定義設定項
- 容器管理的服務有
- 可配置的服務
同一Java EE應用中的應用元件依照部署方式不同而表現出不同的行為
- 安全服務
- 事務服務
- JNDI查詢服務
- Java EE遠端連線服務
- ……
- 不可配置的服務
- 企業Bean和Servlet壽命週期
- 資料庫連線資源池
- 資料持久化
- 訪問其它Java EE平臺API
- 可配置的服務
- Java EE伺服器和容器
對Web services的支援
- Web services是基於Web的企業應用,它使用開放的、基於XML的標準和傳輸協議與呼叫它的客戶端進行資料交換
- XML: 跨平臺、可擴充套件、基於文字的描述資料的標準。
- 自定義標籤(tag)
- 用schema定義其格式
- 用XSL定義處理和展現資料的方式
- SOAP: 客戶請求和web服務響應描述成SOAP訊息
- 信封: 訊息中有什麼?如何處理訊息?
- 編碼規則: 表示訊息中的特定格式的資料例項
- 訊息約定: 描述請求和響應的格式
- WSDL: 用XML格式描述網路服務
- 服務名
- 服務位置
- 與服務通訊的方式
- UDDI和ebXML: 在Internet上釋出web服務資訊的標準
打包應用
- Java EE應用打包成EAR檔案(Enterprise Archive),包括
- Java EE模組
- 部署描述符: 描述應用、模組或元件的部署設定
- Java EE部署描述符
- 執行時部署描述符
——應用伺服器特定
- Java EE模組: 一個Java EE模組包括一或多個具有相同容器型別的Java EE元件,以及一個元件部署描述符
- EJB模組
- 企業bean (class) + EJB部署描述符 → .jar
- Web模組
- Servlet (class) + JSP + 其它Class + HTML + 圖片 + Web部署描述符 → .war
- 應用客戶端模組
- Java class + 應用客戶端部署描述符 → .jar
- 資源介面卡模組
- Java interface, class, native libraries, and other documentation + 資源介面卡部署描述符 → .rar
- Java interface, class, native libraries, and other documentation + 資源介面卡部署描述符 → .rar
- EJB模組
開發角色
- Java EE規範定義瞭如下角色
- Java EE Product Provider
- 實現Java EE產品,提供容器、實現API及其它Java EE特性
- Tool Provider
- 提供元件開發、組裝和打包工具
- Application Component Provider
- 構建Java EE應用中使用的Web元件、企業Bean、Applets,或應用客戶端
- Application Assembler
- 將應用模組組裝成Java EE應用的EAR檔案
- Application Deployer and Administrator
- 配置和部署Java EE應用程式、管理計算和網路架構、監控執行環境
- Java EE Product Provider
Java EE APIs (1)
- Enterprise JavaBeans
- 執行業務邏輯
- 三種企業bean
- Session beans
- Entity beans (在Java EE 5中被Java persistence API entities取代)
- Message-driven beans
- Java Servlet
- JavaServer Pages
- JavaServer Pages Standard Tag Library (JSTL, new in Java EE 5)
- 封裝了對許多JSP應用來說通用的核心功能。
- JSTL有迭代和條件Tag,可以處理流程控制;有處理XML文件的Tag;有用於國際化的Tag;有使用SQL訪問資料庫的Tag;及一些經常使用的功能。
Java EE APIs (2)
- JavaServer Face (JSF, new in Java EE 5)
- 是一個建立Web應用的使用者介面框架
- 主要元件包括
- 一個GUI元件框架
- 用於在不同的HTML或各種標記語言和技術下渲染元件的柔性模型
- 一個用於生成HTML/4.01標記的標準RenderKit
- Java Message Service (JMS)
- Java EE應用元件建立、傳送、接收和讀取訊息的訊息通訊標準
- 支援分散式通訊,具有鬆散耦合、可靠、非同步的特徵
- Java Transaction API (JTA)
- JTA提供了劃分事務的標準介面,UserTransaction介面是核心
- 大多數情況下使用容器管理的事務,而不是JTA
- JavaMail API
- 傳送email通知的API
- 包括:一個應用級的介面;和一個服務提供者介面
Java EE APIs (3)
- JavaBeans Activation Framework (JAF)
- JavaMail使用它,如處理MIME編碼的郵件附件;
- 確定任意資料片斷的型別;
- 封裝對其訪問;
- 發現其可用操作;
- 建立可以執行這些操作的合適的JavaBean元件。
- Java API for XML Processing (JAXP)
- 支援使用DOM、SAX和XSLT處理XML文件
- 支援使用任何XML相容的解析器和XSL處理器
- 支援W3C XML Schema
- Java API for XML-Based RPC (JAX_RPC)
- 使用SOAP標準和HTTP,可以在Internet上實現基於XML的遠端過程呼叫
- 支援WSDL,可以輸出和輸入WSDL文件
- 可與執行在Java和非Java平臺上的web服務客戶端和伺服器端實現互操作
Java EE APIs (4)
- Java API for XML Web Services (JAX_WS, new in Java EE 5)
- 是JAX-RPC的升級
- 使用JAXB API繫結XML資料到Java物件
- 引入了面向訊息的功能,支援非同步程式設計模型
- 支援SOAP1.2
- 可直接使用 XML/HTTP 繫結
- SOAP with Attachments API for Java (SAAJ)
- 是一個底層API
- 允許生成和使用符合SOAP1.1和SOAP附件規範的訊息
- 一般不會直接被使用,而是使用JAX-RPC、JAX-WS
Java EE APIs (5)
- Java API for XML Registries (JAXR)
- 支援ebXML註冊和儲存標準
- 支援UDDI規範
- Java EE Connector Architecture (JCA)
- 用於開發資源介面卡
- 基於Java EE的Web服務與已有EIS間同步或非同步整合,這種整合是面向效能的、安全的、可擴充套件的、基於訊息的、和事務的
- JDBC API
- 用Java程式語言的方法呼叫SQL命令
- 分成兩部分
- 應用級介面 → 應用元件訪問資料庫
- 服務提供者介面 → 將JDBC驅動程式綁縛到Java EE平臺上
Java EE APIs (6)
- Java Naming and Directory Interface (JNDI)
- 提供目錄和命名功能
- 允許Java EE應用程式發現和獲得任意型別的物件
- 與實現無關,可以訪問多種已有的命名和目錄服務
- 使用javax.naming.InitialContext物件在java:comp/env名字下查詢物件
- Java Authentication and Authorization Service (JAAS)
- 鑑別和授權特定使用者或使用者組執行Java EE應用