程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 用J2EE架構企業級應用

用J2EE架構企業級應用

編輯:關於JAVA

企業級應用是指那些為商業組織、大型企業而創建並部署的解決方案及應用。這些大型企業級應用的結構復雜,涉及的外部資源眾多、事務密集、數據量大、用戶數多,有較強的安全性考慮。

當代的企業級應用決不可能是一個個的獨立系統。在企業中,一般都會部署多個彼此連接的、相互通過不同集成層次進行交互的企業級應用,同時這些應用又都有可能與其它企業的相關應用連接,從而構成一個結構復雜的、跨越Intranet和Internet的分布式企業應用群集。其中,連接企業內部各種應用的技術稱為EAI(Enterprise Application Integration, 企業應用集成),而連接企業間各種應用的技術稱為B2BI(Business-To-Business Integration, 企業間集成),采用EAI、B2BI技術及早先的N層體系架構就是當今企業級應用的最大特征。

此外,作為企業級應用,其不但要有強大的功能,還要能夠滿足未來業務需求的變化,易於升級和維護。

企業級應用架構

下面我們使用一個圖示來簡單地解析一下企業級應用的架構,見圖1。

圖1 企業級應用的體系架構

這個體系架構的主體是MVC架構。MVC是Model/View/Control的縮寫。Model/View/Control是軟件設計的典型結構。在這種設計結構下,一個應用被分為三個部分:Model、View和Controller,每個部分負責不同的功能。Model是指對業務數據/信息的處理模塊,包括對業務數據的存取、加工、綜合等;View是指用戶界面,也就是面向用戶的數據表示;Controller則負責View和Model之間的流程控制,也就是完成兩個方向的動作:1.將用戶界面(View)的操作映射到具體的Model,以完成具體的業務邏輯;2. 將通過Model處理完的業務數據及時反應到用戶界面(View)上。

MVC架構使得應用程序的結構更加清晰,通過將代碼按照層次劃分為業務邏輯/數據、用戶界面和應用流程控制這三個層次,增強代碼穩定性。我們知道,對於Model、View、Controller這三部分功能來講,View的實現一般是由界面設計人員和界面程序員來完成,Model則是由業務邏輯程序員來完成,Controller則一般由負責整體控制的程序員來完成。Controller部分的代碼比較穩定,一般會實現一個通用的架構;而Model則跟隨商務流程的變化而變化;View的更改則是隨著用戶需求的更改而更改。這種模塊功能的劃分有利於在代碼修改過程中進行模塊的隔離,而不需要把具有不同功能的代碼混雜在一起造成混亂。對於項目開發而言,有利於在項目小組內按照小組成員各自的擅長進行分工,有利於三個部分並行開發、加快項目進度。

企業級資源連接

對於Model部分,也就是業務邏輯的處理部分,一般總是對商務數據進行處理、加工、綜合等。對於企業級應用而言,商袷萦辛街擲叢矗恢質鞘菘猓硪恢衷蚴瞧渌鈉笠導隊τ孟低場?lt;BR>

對於數據庫而言,這應當是大家熟悉的領域。我們通過使用數據庫驅動程序,利用SQL來查詢、操縱數據庫。而對於其它的企業級應用而言,一般這些應用都會提供API,通過這些API,其它的應用就能夠存取訪問其中的數據,甚至是觸發這些企業級應用中的一些業余流程。

企業級平台的特征

企業級應用需要使用優秀的企業級應用體系結構,而優秀的企業級應用體系結構通常來自於優秀的解決方案。應用程序設計開始就要考慮其體系結構的合理性、靈活性、健壯性,從而既可滿足企業級應用的復雜需求,也能為今後系統的調整和升級留有余地。體系結構影響了整個應用的生命周期,實際上能夠延長整個應用的生命周期,同時增強了用戶在多變的商業社會中的適應性,減少了系統維護的開銷和難度,從而給用戶帶來最大的利益。

一個理想的企業級應用系統平台應該具有如下特征:

◆ 部署、開發和維護的有效性;

◆ 系統運行的健壯性和可靠性;

◆ 具備失敗恢復的能力;

◆ 能夠處理海量的數據;

◆ 能夠同時支持數百個用戶;

◆ 具備很高的安全性;

◆ 數據的高可用性;

◆ 可以迅速地開發和部署新的應用程序;

◆ 簡化組件重用;

◆ 直觀的編程模型;

◆ 支持行業標准和通用編程接口;

◆ 適用與小、中、大各種規模的應用系統;

◆ 系統費用隨系統規模的增長而線性增長;

◆ 不斷進行技術升級,以滿足不斷湧現的需求。

使用J2EE架構企業級應用

為了滿足架構企業級應用的需求,Java的創始人Sun公司在早期的J2SE(Java 2 Platform Standard Edition)基礎上,針對企業級應用的各種需求,主導並創造了J2EE(Java 2 Platform Enterprise Edition)。

那麼到底什麼是J2EE呢?從整體上講,J2EE是使用Java技術開發企業級應用的一種事實上的工業標准(Sun公司出於其自身利益的考慮,至今沒有將Java及其相關技術納入標准化組織的體系),它是Java技術不斷適應和促進企業級應用過程中的產物。目前,Java平台有三個版本:適用於小型設備和智能卡的J2ME(Java 2 Platform Micro Edition)、適用於桌面系統的J2SE和適用於企業級應用的J2EE。Sun推出J2EE的目的是為了克服傳統Client/Server模式的弊病,迎合Browser/Server架構的潮流,為應用Java技術開發服務器端應用提供一個平台獨立的、可移植的、多用戶的、安全的和基於標准的企業級平台,從而簡化企業應用的開發、管理和部署。J2EE是一個標准,而不是一個現成的產品。各個平台開發商按照J2EE規范分別開發了不同的J2EE應用服務器,J2EE應用服務器是J2EE企業級應用的部署平台。由於它們都遵循了J2EE規范,因此,使用J2EE技術開發的企業級應用可以部署在各種J2EE應用服務器上。

為了推廣並規范化使用J2EE架構企業級應用的體系架構,Sun同時給出了一個建議性的J2EE應用設計模型:J2EE Blueprints。J2EE Blueprints提供了實施J2EE企業級應用的體系架構、設計模式和相關的代碼,通過應用J2EE Blueprints所描述的體系模型,能夠部分簡化架構企業級應用這項復雜的工作。J2EE Blueprints是開發人員設計和優化J2EE組件的基本原則,同時為圍繞開發工作進行職能分工給出了指導性策略,以幫助應用開發設計人員合理地分配技術資源。

下面我們參照J2EE Blueprints,結合最新版的J2EE規范(J2EE 1.4),從整體上闡述如何使用J2EE架構企業級應用。

圖2 使用J2EE架構企業級應用的體系架構

圖2給出了使用J2EE架構企業級應用的體系架構。J2EE將組成一個完整企業級應用的不同部分納入不同的容器(Container),每個容器中都包含若干組件(這些組件是需要部署在相應容器中的),同時各種組件都能使用各種J2EE Service/API。J2EE容器包括:

◆ Web容器 服務器端容器,包括兩種組件JSP和Servlet,JSP和Servlet都是Web服務器的功能擴展,接受Web請求,返回動態的Web頁面。Web容器中的組件可使用EJB容器中的組件完成復雜的商務邏輯。

◆ EJB容器 服務器端容器,包含的組件為EJB(Enterprise JavaBeans),它是J2EE的核心之一,主要用於服務器端的商業邏輯的實現。EJB規范定義了一個開發和部署分布式商業邏輯的框架,以簡化企業級應用的開發,使其較容易地具備可伸縮性、可移植性、分布式事務處理、多用戶和安全性等。

◆ Applet容器 客戶端容器,包含的組件為Applet。Applet是嵌在浏覽器中的一種輕量級客戶端,一般而言,僅當使用Web頁面無法充分地表現數據或應用界面的時候,才使用它。Applet是一種替代Web頁面的手段,我們僅能夠使用J2SE開發Applet,Applet無法使用J2EE的各種Service和API,這是為了安全性的考慮。

◆ Application Client容器 客戶端容器,包含的組件為Application Client。Application Client相對Applet而言是一種較重量級的客戶端,它能夠使用J2EE的大多數Service和API。

通過這四個容器,J2EE能夠靈活地實現前面描述的企業級應用的架構。

在View部分,J2EE提供了三種手段:Web容器中的JSP(或Servlet)、Applet和Application Client,分別能夠實現面向浏覽器的數據表現和面向桌面應用的數據表現。Web容器中的Servlet是實現Controller部分業務流程控制的主要手段;而EJB則主要針對Model部分的業務邏輯實現。至於與各種企業資源和企業級應用相連接,則是依靠J2EE的各種服務和API。

在J2EE的各種服務和API中,JDBC和JCA用於企業資源(各種企業信息系統和數據庫等)的連接,JAX-RPC、JAXR和SAAJ則是實現Web Services和Web Services連接的基本支持。

J2EE的各種組件

我們就J2EE的各種組件、服務和API,進行更加詳細的闡述,看看在開發不同類型的企業級應用時,根據各自需求和目標的不同,應當如何靈活使用並組合不同的組件和服務。

· Servlet

Servlet是Java平台上的CGI技術。Servlet在服務器端運行,動態地生成Web頁面。與傳統的CGI和許多其它類似CGI的技術相比,Java Servlet具有更高的效率並更容易使用。對於Servlet,重復的請求不會導致同一程序的多次轉載,它是依靠線程的方式來支持並發訪問的。

· JSP

JSP(Java Server Page)是一種實現普通靜態HTML和動態頁面輸出混合編碼的技術。從這一點來看,非常類似Microsoft ASP、PHP等技術。借助形式上的內容和外觀表現的分離,Web頁面制作的任務可以比較方便地劃分給頁面設計人員和程序員,並方便地通過JSP來合成。在運行時態,JSP將會被首先轉換成Servlet,並以Servlet的形態編譯運行,因此它的效率和功能與Servlet相比沒有差別,一樣具有很高的效率。

· EJB

EJB定義了一組可重用的組件:Enterprise Beans。開發人員可以利用這些組件,像搭積木一樣建立分布式應用。在裝配組件時,所有的Enterprise Beans都需要配置到EJB服務器(一般的Weblogic、WebSphere等J2EE應用服務器都是EJB服務器)中。EJB服務器作為容器和低層平台的橋梁管理著EJB容器,並向該容器提供訪問系統服務的能力。所有的EJB實例都運行在EJB容器中。EJB容器提供了系統級的服務,控制了EJB的生命周期。EJB容器為它的開發人員代管了諸如安全性、遠程連接、生命周期管理及事務管理等技術環節,簡化了商業邏輯的開發。EJB中定義了三種Enterprise Beans:

◆ Session Beans

◆ Entity Beans

◆ Message-driven Beans

· JDBC

JDBC(Java Database Connectivity,Java數據庫連接)API是一個標准SQL(Structured Query Language,結構化查詢語言)數據庫訪問接口,它使數據庫開發人員能夠用標准Java API編寫數據庫應用程序。JDBC API主要用來連接數據庫和直接調用SQL命令執行各種SQL語句。利用JDBC API可以執行一般的SQL語句、動態SQL語句及帶IN和OUT參數的存儲過程。Java中的JDBC相當與Microsoft平台中的ODBC(Open Database Connectivity)。

· JMS

JMS(Java Message Service,Java消息服務)是一組Java應用接口,它提供創建、發送、接收、讀取消息的服務。JMS API定義了一組公共的應用程序接口和相應語法,使得Java應用能夠和各種消息中間件進行通信,這些消息中間件包括IBM MQ-Series、Microsoft MSMQ及純Java的SonicMQ。通過使用JMS API,開發人員無需掌握不同消息產品的使用方法,也可以使用統一的JMS API來操縱各種消息中間件。通過使用JMS,能夠最大限度地提升消息應用的可移植性。 JMS既支持點對點的消息通信,也支持發布/訂閱式的消息通信。

· JNDI

由於J2EE應用程序組件一般分布在不同的機器上,所以需要一種機制以便於組件客戶使用者查找和引用組件及資源。在J2EE體系中,使用JNDI(Java Naming and Directory Interface)定位各種對象,這些對象包括EJB、數據庫驅動、JDBC數據源及消息連接等。JNDI API為應用程序提供了一個統一的接口來完成標准的目錄操作,如通過對象屬性來查找和定位該對象。由於JNDI是獨立於目錄協議的,應用還可以使用JNDI訪問各種特定的目錄服務,如LDAP、NDS和DNS等。

· JTA

JTA(Java Transaction API)提供了J2EE中處理事務的標准接口,它支持事務的開始、回滾和提交。同時在一般的J2EE平台上,總提供一個JTS(Java Transaction Service)作為標准的事務處理服務,開發人員可以使用JTA來使用JTS。

· JCA

JCA(J2EE Connector Architecture)是J2EE體系架構的一部分,為開發人員提供了一套連接各種企業信息系統(EIS,包括ERP、SCM、CRM等)的體系架構,對於EIS開發商而言,它們只需要開發一套基於JCA的EIS連接適配器,開發人員就能夠在任何的J2EE應用服務器中連接並使用它。基於JCA的連接適配器的實現,需要涉及J2EE中的事務管理、安全管理及連接管理等服務組件。

· JMX

JMX(Java Management Extensions)的前身是JMAPI。JMX致力於解決分布式系統管理的問題。JMX是一種應用編程接口、可擴展對象和方法的集合體,可以跨越各種異構操作系統平台、系統體系結構和網絡傳輸協議,開發無縫集成的面向系統、網絡和服務的管理應用。JMX是一個完整的網絡管理應用程序開發環境,它同時提供了廠商需要收集的完整的特性清單、可生成資源清單表格、圖形化的用戶接口;訪問SNMP的網絡API;主機間遠程過程調用;數據庫訪問方法等。

· JAAS

JAAS(Java Authentication and Authorization Service)實現了一個Java版本的標准Pluggable Authentication Module(PAM)的框架。JAAS可用來進行用戶身份的鑒定,從而能夠可靠並安全地確定誰在執行Java代碼。同時JAAS還能通過對用戶進行授權,實現基於用戶的訪問控制。

· JACC

JACC(Java Authorization Service Provider Contract for Containers)在J2EE應用服務器和特定的授權認證服務器之間定義了一個連接的協約,以便將各種授權認證服務器插入到J2EE產品中去。

· JAX-RPC

通過使用JAX-RPC(Java API for XML-based RPC),已有的Java類或Java應用都能夠被重新包裝,並以Web Services的形式發布。JAX-RPC提供了將RPC參數(in/out)編碼和解碼的API,使開發人員可以方便地使用SOAP消息來完成RPC調用。同樣,對於那些使用EJB(Enterprise JavaBeans)的商業應用而言,同樣可以使用JAX-RPC來包裝成Web服務,而這個Web Servoce的WSDL界面是與原先的EJB的方法是對應一致的。JAX-RPC為用戶包裝了Web服務的部署和實現,對Web服務的開發人員而言,SOAP/WSDL變得透明,這有利於加速Web服務的開發周期。

· JAXR

JAXR(Java API for XML Registries)提供了與多種類型注冊服務進行交互的API。JAXR運行客戶端訪問與JAXR規范相兼容的Web Servcices,這裡的Web Services即為注冊服務。一般來說,注冊服務總是以Web Services的形式運行的。JAXR支持三種注冊服務類型:JAXR Pluggable Provider、Registry-specific JAXR Provider、JAXR Bridge Provider(支持UDDI Registry和ebXML Registry/Repository等)。

· SAAJ

SAAJ(SOAP with Attachemnts API for Java)是JAX-RPC的一個增強,為進行低層次的SOAP消息操縱提供了支持。

企業級應用示例

下面我們通過假設一個企業應用的J2EE實現,來了解各種組件和服務的應用。假設應用對象是計算機產品的生產商/零售商的銷售系統,這個銷售系統能夠通過自己的網站發布產品信息,同時也能將產品目錄傳送給計算機產品交易市場。銷售系統能夠在線接受訂單(來自自己的Web網站或者來自計算機產品交易市場),並隨後轉入內部企業管理系統進行相關的後續處理。

參見圖3,這個企業應用可以這種方式架構。該企業應用的核心是產品目錄管理和產品定購管理這兩個業務邏輯,使用EJB加以實現,並部署在EJB容器中。由於產品目錄和定購信息都需要持久化,因此使用JDBC連接數據庫,並使用JTA來完成數據庫存取事務。

圖3 J2EE應用示例

然後使用JSP/Servlet來實現應用的Web表現:在線產品目錄浏覽和在線定購。為了將產品目錄發送給特定的交易市場,使用JMS實現異步的基於消息的產品目錄傳輸。為了使得更多的其它外部交易市場能夠集成產品目錄和定購業務,需要使用Web Services技術包裝商業邏輯的實現。由於產品定購管理需要由公司內部雇員進行處理,因此需要集成公司內部的用戶系統和訪問控制服務以方便雇員的使用,使用JACC集成內部的訪問控制服務,使用JNDI集成內部的用戶目錄,並使用JAAS進行訪問控制。由於產品訂購事務會觸發後續的企業ERP系統的相關操作(包括倉儲、財務、生產等),需要使用JCA連接企業ERP。

最後為了將這個應用納入到企業整體的系統管理體系中去,使用Application Client架構了一個管理客戶端(與其它企業應用管理應用部署在一台機器上),並通過JMX管理這個企業應用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved