- 相關(guān)推薦
j2ee企業(yè)級應用開(kāi)發(fā)
企業(yè)級應用是指那些為商業(yè)組織、大型企業(yè)而創(chuàng )建并部署的解決方案及應用。下面是小編整理的關(guān)于j2ee企業(yè)級應用開(kāi)發(fā),希望大家認真閱讀!
當代的企業(yè)級應用決不可能是一個(gè)個(gè)的獨立系統。在企業(yè)中,一般都會(huì )部署多個(gè)彼此連接的、相互通過(guò)不同集成層次進(jìn)行交互的企業(yè)級應用,同時(shí)這些應用又都有可能與其它企業(yè)的相關(guān)應用連接,從而構成一個(gè)結構復雜的、跨越Intranet和Internet的分布式企業(yè)應用群集。其中,連接企業(yè)內部各種應用的技術(shù)稱(chēng)為EAI(Enterprise Application Integration, 企業(yè)應用集成),而連接企業(yè)間各種應用的技術(shù)稱(chēng)為B2BI(Business-To-Business Integration, 企業(yè)間集成),采用EAI、B2BI技術(shù)及早先的N層體系架構就是當今企業(yè)級應用的最大特征。
此外,作為企業(yè)級應用,其不但要有強大的功能,還要能夠滿(mǎn)足未來(lái)業(yè)務(wù)需求的變化,易于升級和維護。
企業(yè)級應用架構
下面我們使用一個(gè)圖示來(lái)簡(jiǎn)單地解析一下企業(yè)級應用的架構,見(jiàn)圖1。
圖1 企業(yè)級應用的體系架構
這個(gè)體系架構的主體是MVC架構。MVC是Model/View/Control的縮寫(xiě)。Model/View/Control是軟件設計的典型結構。在這種設計結構下,一個(gè)應用被分為三個(gè)部分:Model、View和Controller,每個(gè)部分負責不同的功能。Model是指對業(yè)務(wù)數據/信息的處理模塊,包括對業(yè)務(wù)數據的存取、加工、綜合等;View是指用戶(hù)界面,也就是面向用戶(hù)的數據表示;Controller則負責View和Model之間的流程控制,也就是完成兩個(gè)方向的動(dòng)作:1.將用戶(hù)界面(View)的操作映射到具體的Model,以完成具體的業(yè)務(wù)邏輯;2. 將通過(guò)Model處理完的業(yè)務(wù)數據及時(shí)反應到用戶(hù)界面(View)上。
MVC架構使得應用程序的結構更加清晰,通過(guò)將代碼按照層次劃分為業(yè)務(wù)邏輯/數據、用戶(hù)界面和應用流程控制這三個(gè)層次,增強代碼穩定性。我們知道,對于Model、View、Controller這三部分功能來(lái)講,View的實(shí)現一般是由界面設計人員和界面程序員來(lái)完成,Model則是由業(yè)務(wù)邏輯程序員來(lái)完成,Controller則一般由負責整體控制的程序員來(lái)完成。Controller部分的代碼比較穩定,一般會(huì )實(shí)現一個(gè)通用的架構;而Model則跟隨商務(wù)流程的變化而變化;View的更改則是隨著(zhù)用戶(hù)需求的更改而更改。這種模塊功能的劃分有利于在代碼修改過(guò)程中進(jìn)行模塊的隔離,而不需要把具有不同功能的代碼混雜在一起造成混亂。對于項目開(kāi)發(fā)而言,有利于在項目小組內按照小組成員各自的擅長(cháng)進(jìn)行分工,有利于三個(gè)部分并行開(kāi)發(fā)、加快項目進(jìn)度。
企業(yè)級資源連接
對于Model部分,也就是業(yè)務(wù)邏輯的處理部分,一般總是對商務(wù)數據進(jìn)行處理、加工、綜合等。對于企業(yè)級應用而言,商袷?縈辛街擲叢矗?恢質(zhì)鞘?菘猓?硪恢衷蚴瞧淥?鈉笠導隊τ孟低場(chǎng)?lt;BR>
對于數據庫而言,這應當是大家熟悉的領(lǐng)域。我們通過(guò)使用數據庫驅動(dòng)程序,利用SQL來(lái)查詢(xún)、操縱數據庫。而對于其它的企業(yè)級應用而言,一般這些應用都會(huì )提供API,通過(guò)這些API,其它的應用就能夠存取訪(fǎng)問(wèn)其中的數據,甚至是觸發(fā)這些企業(yè)級應用中的一些業(yè)余流程。
企業(yè)級平臺的特征
企業(yè)級應用需要使用優(yōu)秀的企業(yè)級應用體系結構,而優(yōu)秀的企業(yè)級應用體系結構通常來(lái)自于優(yōu)秀的解決方案。應用程序設計開(kāi)始就要考慮其體系結構的合理性、靈活性、健壯性,從而既可滿(mǎn)足企業(yè)級應用的復雜需求,也能為今后系統的調整和升級留有余地。體系結構影響了整個(gè)應用的生命周期,實(shí)際上能夠延長(cháng)整個(gè)應用的生命周期,同時(shí)增強了用戶(hù)在多變的商業(yè)社會(huì )中的適應性,減少了系統維護的開(kāi)銷(xiāo)和難度,從而給用戶(hù)帶來(lái)最大的利益。
一個(gè)理想的企業(yè)級應用系統平臺應該具有如下特征:
◆ 部署、開(kāi)發(fā)和維護的有效性;
◆ 系統運行的健壯性和可靠性;
◆ 具備失敗恢復的能力;
◆ 能夠處理海量的數據;
◆ 能夠同時(shí)支持數百個(gè)用戶(hù);
◆ 具備很高的安全性;
◆ 數據的高可用性;
◆ 可以迅速地開(kāi)發(fā)和部署新的應用程序;
◆ 簡(jiǎn)化組件重用;
◆ 直觀(guān)的編程模型;
◆ 支持行業(yè)標準和通用編程接口;
◆ 適用與小、中、大各種規模的應用系統;
◆ 系統費用隨系統規模的增長(cháng)而線(xiàn)性增長(cháng);
◆ 不斷進(jìn)行技術(shù)升級,以滿(mǎn)足不斷涌現的需求。
使用J2EE架構企業(yè)級應用
為了滿(mǎn)足架構企業(yè)級應用的需求,Java的創(chuàng )始人Sun公司在早期的J2SE(Java 2 Platform Standard Edition)基礎上,針對企業(yè)級應用的各種需求,主導并創(chuàng )造了J2EE(Java 2 Platform Enterprise Edition)。
那么到底什么是J2EE呢?從整體上講,J2EE是使用Java技術(shù)開(kāi)發(fā)企業(yè)級應用的一種事實(shí)上的工業(yè)標準(Sun公司出于其自身利益的考慮,至今沒(méi)有將Java及其相關(guān)技術(shù)納入標準化組織的體系),它是Java技術(shù)不斷適應和促進(jìn)企業(yè)級應用過(guò)程中的產(chǎn)物。目前,Java平臺有三個(gè)版本:適用于小型設備和智能卡的J2ME(Java 2 Platform Micro Edition)、適用于桌面系統的J2SE和適用于企業(yè)級應用的J2EE。Sun推出J2EE的目的是為了克服傳統Client/Server模式的弊病,迎合Browser/Server架構的潮流,為應用Java技術(shù)開(kāi)發(fā)服務(wù)器端應用提供一個(gè)平臺可移植的、多用戶(hù)的、獨立的、安全的和基于標準的企業(yè)級平臺,從而簡(jiǎn)化企業(yè)應用的開(kāi)發(fā)、管理和部署。J2EE是一個(gè)標準,而不是一個(gè)現成的產(chǎn)品。各個(gè)平臺開(kāi)發(fā)商按照J2EE規范分別開(kāi)發(fā)了不同的J2EE應用服務(wù)器,J2EE應用服務(wù)器是J2EE企業(yè)級應用的部署平臺。由于它們都遵循了J2EE規范,因此,使用J2EE技術(shù)開(kāi)發(fā)的企業(yè)級應用可以部署在各種J2EE應用服務(wù)器上。
為了推廣并規范化使用J2EE架構企業(yè)級應用的體系架構,Sun同時(shí)給出了一個(gè)建議性的J2EE應用設計模型:J2EE Blueprints。J2EE Blueprints提供了實(shí)施J2EE企業(yè)級應用的體系架構、設計模式和相關(guān)的代碼,通過(guò)應用J2EE Blueprints所描述的體系模型,能夠部分簡(jiǎn)化架構企業(yè)級應用這項復雜的工作。J2EE Blueprints是開(kāi)發(fā)人員設計和優(yōu)化J2EE組件的基本原則,同時(shí)為圍繞開(kāi)發(fā)工作進(jìn)行職能分工給出了指導性策略,以幫助應用開(kāi)發(fā)設計人員合理地分配技術(shù)資源。
下面我們參照J2EE Blueprints,結合最新版的J2EE規范(J2EE 1.4),從整體上闡述如何使用J2EE架構企業(yè)級應用。
圖2 使用J2EE架構企業(yè)級應用的體系架構
圖2給出了使用J2EE架構企業(yè)級應用的體系架構。J2EE將組成一個(gè)完整企業(yè)級應用的不同部分納入不同的容器(Container),每個(gè)容器中都包含若干組件(這些組件是需要部署在相應容器中的),同時(shí)各種組件都能使用各種J2EE Service/API。J2EE容器包括:
◆ Web容器 服務(wù)器端容器,包括兩種組件JSP和Servlet,JSP和Servlet都是Web服務(wù)器的功能擴展,接受Web請求,返回動(dòng)態(tài)的Web頁(yè)面。Web容器中的組件可使用EJB容器中的組件完成復雜的商務(wù)邏輯。
◆ EJB容器 服務(wù)器端容器,包含的組件為EJB(Enterprise JavaBeans),它是J2EE的核心之一,主要用于服務(wù)器端的商業(yè)邏輯的實(shí)現。EJB規范定義了一個(gè)開(kāi)發(fā)和部署分布式商業(yè)邏輯的框架,以簡(jiǎn)化企業(yè)級應用的開(kāi)發(fā),使其較容易地具備可伸縮性、可移植性、分布式事務(wù)處理、多用戶(hù)和安全性等。
◆ Applet容器 客戶(hù)端容器,包含的組件為Applet。Applet是嵌在瀏覽器中的一種輕量級客戶(hù)端,一般而言,僅當使用Web頁(yè)面無(wú)法充分地表現數據或應用界面的時(shí)候,才使用它。Applet是一種替代Web頁(yè)面的手段,我們僅能夠使用J2SE開(kāi)發(fā)Applet,Applet無(wú)法使用J2EE的各種Service和API,這是為了安全性的考慮。
◆ Application Client容器 客戶(hù)端容器,包含的組件為Application Client。Application Client相對Applet而言是一種較重量級的客戶(hù)端,它能夠使用J2EE的大多數Service和API。
通過(guò)這四個(gè)容器,J2EE能夠靈活地實(shí)現前面描述的企業(yè)級應用的架構。
在View部分,J2EE提供了三種手段:Web容器中的JSP(或Servlet)、Applet和Application Client,分別能夠實(shí)現面向瀏覽器的數據表現和面向桌面應用的數據表現。Web容器中的Servlet是實(shí)現Controller部分業(yè)務(wù)流程控制的主要手段;而EJB則主要針對Model部分的業(yè)務(wù)邏輯實(shí)現。至于與各種企業(yè)資源和企業(yè)級應用相連接,則是依靠J2EE的各種服務(wù)和API。
在J2EE的各種服務(wù)和API中,JDBC和JCA用于企業(yè)資源(各種企業(yè)信息系統和數據庫等)的連接,JAX-RPC、JAXR和SAAJ則是實(shí)現Web Services和Web Services連接的基本支持。
J2EE的各種組件
我們就J2EE的各種組件、服務(wù)和API,進(jìn)行更加詳細的闡述,看看在開(kāi)發(fā)不同類(lèi)型的企業(yè)級應用時(shí),根據各自需求和目標的不同,應當如何靈活使用并組合不同的組件和服務(wù)。
· Servlet
Servlet是Java平臺上的CGI技術(shù)。Servlet在服務(wù)器端運行,動(dòng)態(tài)地生成Web頁(yè)面。與傳統的CGI和許多其它類(lèi)似CGI的技術(shù)相比,Java Servlet具有更高的效率并更容易使用。對于Servlet,重復的請求不會(huì )導致同一程序的多次轉載,它是依靠線(xiàn)程的方式來(lái)支持并發(fā)訪(fǎng)問(wèn)的。
· JSP
JSP(Java Server Page)是一種實(shí)現普通靜態(tài)HTML和動(dòng)態(tài)頁(yè)面輸出混合編碼的技術(shù)。從這一點(diǎn)來(lái)看,非常類(lèi)似Microsoft ASP、PHP等技術(shù)。借助形式上的內容和外觀(guān)表現的分離,Web頁(yè)面制作的任務(wù)可以比較方便地劃分給頁(yè)面設計人員和程序員,并方便地通過(guò)JSP來(lái)合成。在運行時(shí)態(tài),JSP將會(huì )被首先轉換成Servlet,并以Servlet的形態(tài)編譯運行,因此它的效率和功能與Servlet相比沒(méi)有差別,一樣具有很高的效率。
· EJB
EJB定義了一組可重用的組件:Enterprise Beans。開(kāi)發(fā)人員可以利用這些組件,像搭積木一樣建立分布式應用。在裝配組件時(shí),所有的Enterprise Beans都需要配置到EJB服務(wù)器(一般的Weblogic、WebSphere等J2EE應用服務(wù)器都是EJB服務(wù)器)中。EJB服務(wù)器作為容器和低層平臺的橋梁管理著(zhù)EJB容器,并向該容器提供訪(fǎng)問(wèn)系統服務(wù)的能力。所有的EJB實(shí)例都運行在EJB容器中。EJB容器提供了系統級的服務(wù),控制了EJB的生命周期。EJB容器為它的開(kāi)發(fā)人員代管了諸如安全性、遠程連接、生命周期管理及事務(wù)管理等技術(shù)環(huán)節,簡(jiǎn)化了商業(yè)邏輯的開(kāi)發(fā)。EJB中定義了三種Enterprise Beans:
◆ Session Beans
◆ Entity Beans
◆ Message-driven Beans
· JDBC
JDBC(Java Database Connectivity,Java數據庫連接)API是一個(gè)標準SQL(Structured Query Language,結構化查詢(xún)語(yǔ)言)數據庫訪(fǎng)問(wèn)接口,它使數據庫開(kāi)發(fā)人員能夠用標準Java API編寫(xiě)數據庫應用程序。JDBC API主要用來(lái)連接數據庫和直接調用SQL命令執行各種SQL語(yǔ)句。利用JDBC API可以執行一般的SQL語(yǔ)句、動(dòng)態(tài)SQL語(yǔ)句及帶IN和OUT參數的存儲過(guò)程。Java中的JDBC相當與Microsoft平臺中的ODBC(Open Database Connectivity)。
· JMS
JMS(Java Message Service,Java消息服務(wù))是一組Java應用接口,它提供創(chuàng )建、發(fā)送、接收、讀取消息的服務(wù)。JMS API定義了一組公共的應用程序接口和相應語(yǔ)法,使得Java應用能夠和各種消息中間件進(jìn)行通信,這些消息中間件包括IBM MQ-Series、Microsoft MSMQ及純Java的SonicMQ。通過(guò)使用JMS API,開(kāi)發(fā)人員無(wú)需掌握不同消息產(chǎn)品的使用方法,也可以使用統一的JMS API來(lái)操縱各種消息中間件。通過(guò)使用JMS,能夠最大限度地提升消息應用的可移植性。 JMS既支持點(diǎn)對點(diǎn)的消息通信,也支持發(fā)布/訂閱式的消息通信。
· JNDI
由于J2EE應用程序組件一般分布在不同的機器上,所以需要一種機制以便于組件客戶(hù)使用者查找和引用組件及資源。在J2EE體系中,使用JNDI(Java Naming and Directory Interface)定位各種對象,這些對象包括EJB、數據庫驅動(dòng)、JDBC數據源及消息連接等。JNDI API為應用程序提供了一個(gè)統一的接口來(lái)完成標準的目錄操作,如通過(guò)對象屬性來(lái)查找和定位該對象。由于JNDI是獨立于目錄協(xié)議的,應用還可以使用JNDI訪(fǎng)問(wèn)各種特定的目錄服務(wù),如LDAP、NDS和DNS等。
· JTA
JTA(Java Transaction API)提供了J2EE中處理事務(wù)的標準接口,它支持事務(wù)的開(kāi)始、回滾和提交。同時(shí)在一般的J2EE平臺上,總提供一個(gè)JTS(Java Transaction Service)作為標準的事務(wù)處理服務(wù),開(kāi)發(fā)人員可以使用JTA來(lái)使用JTS。
· JCA
JCA(J2EE Connector Architecture)是J2EE體系架構的一部分,為開(kāi)發(fā)人員提供了一套連接各種企業(yè)信息系統(EIS,包括ERP、SCM、CRM等)的體系架構,對于EIS開(kāi)發(fā)商而言,它們只需要開(kāi)發(fā)一套基于JCA的EIS連接適配器,開(kāi)發(fā)人員就能夠在任何的J2EE應用服務(wù)器中連接并使用它;贘CA的連接適配器的實(shí)現,需要涉及J2EE中的事務(wù)管理、安全管理及連接管理等服務(wù)組件。
· JMX
JMX(Java Management Extensions)的前身是JMAPI。JMX致力于解決分布式系統管理的問(wèn)題。JMX是一種應用編程接口、可擴展對象和方法的集合體,可以跨越各種異構操作系統平臺、系統體系結構和網(wǎng)絡(luò )傳輸協(xié)議,開(kāi)發(fā)無(wú)縫集成的面向系統、網(wǎng)絡(luò )和服務(wù)的管理應用。JMX是一個(gè)完整的網(wǎng)絡(luò )管理應用程序開(kāi)發(fā)環(huán)境,它同時(shí)提供了廠(chǎng)商需要收集的完整的特性清單、可生成資源清單表格、圖形化的用戶(hù)接口;訪(fǎng)問(wèn)SNMP的網(wǎng)絡(luò )API;主機間遠程過(guò)程調用;數據庫訪(fǎng)問(wèn)方法等。
· JAAS
JAAS(Java Authentication and Authorization Service)實(shí)現了一個(gè)Java版本的標準Pluggable Authentication Module(PAM)的框架。JAAS可用來(lái)進(jìn)行用戶(hù)身份的鑒定,從而能夠可靠并安全地確定誰(shuí)在執行Java代碼。同時(shí)JAAS還能通過(guò)對用戶(hù)進(jìn)行授權,實(shí)現基于用戶(hù)的訪(fǎng)問(wèn)控制。
· JACC
JACC(Java Authorization Service Provider Contract for Containers)在J2EE應用服務(wù)器和特定的授權認證服務(wù)器之間定義了一個(gè)連接的協(xié)約,以便將各種授權認證服務(wù)器插入到J2EE產(chǎn)品中去。
· JAX-RPC
通過(guò)使用JAX-RPC(Java API for XML-based RPC),已有的Java類(lèi)或Java應用都能夠被重新包裝,并以Web Services的形式發(fā)布。JAX-RPC提供了將RPC參數(in/out)編碼和解碼的API,使開(kāi)發(fā)人員可以方便地使用SOAP消息來(lái)完成RPC調用。同樣,對于那些使用EJB(Enterprise JavaBeans)的商業(yè)應用而言,同樣可以使用JAX-RPC來(lái)包裝成Web服務(wù),而這個(gè)Web Servoce的WSDL界面是與原先的EJB的方法是對應一致的。JAX-RPC為用戶(hù)包裝了Web服務(wù)的部署和實(shí)現,對Web服務(wù)的開(kāi)發(fā)人員而言,SOAP/WSDL變得透明,這有利于加速Web服務(wù)的開(kāi)發(fā)周期。
· JAXR
JAXR(Java API for XML Registries)提供了與多種類(lèi)型注冊服務(wù)進(jìn)行交互的API。JAXR運行客戶(hù)端訪(fǎng)問(wèn)與JAXR規范相兼容的Web Servcices,這里的Web Services即為注冊服務(wù)。一般來(lái)說(shuō),注冊服務(wù)總是以Web Services的形式運行的。JAXR支持三種注冊服務(wù)類(lèi)型: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的一個(gè)增強,為進(jìn)行低層次的SOAP消息操縱提供了支持。
企業(yè)級應用示例
下面我們通過(guò)假設一個(gè)企業(yè)應用的J2EE實(shí)現,來(lái)了解各種組件和服務(wù)的應用。假設應用對象是計算機產(chǎn)品的生產(chǎn)商/零售商的銷(xiāo)售系統,這個(gè)銷(xiāo)售系統能夠通過(guò)自己的網(wǎng)站發(fā)布產(chǎn)品信息,同時(shí)也能將產(chǎn)品目錄傳送給計算機產(chǎn)品交易市場(chǎng)。銷(xiāo)售系統能夠在線(xiàn)接受訂單(來(lái)自自己的Web網(wǎng)站或者來(lái)自計算機產(chǎn)品交易市場(chǎng)),并隨后轉入內部企業(yè)管理系統進(jìn)行相關(guān)的后續處理。
參見(jiàn)圖3,這個(gè)企業(yè)應用可以這種方式架構。該企業(yè)應用的核心是產(chǎn)品目錄管理和產(chǎn)品定購管理這兩個(gè)業(yè)務(wù)邏輯,使用EJB加以實(shí)現,并部署在EJB容器中。由于產(chǎn)品目錄和定購信息都需要持久化,因此使用JDBC連接數據庫,并使用JTA來(lái)完成數據庫存取事務(wù)。
圖3 J2EE應用示例
然后使用JSP/Servlet來(lái)實(shí)現應用的Web表現:在線(xiàn)產(chǎn)品目錄瀏覽和在線(xiàn)定購。為了將產(chǎn)品目錄發(fā)送給特定的交易市場(chǎng),使用JMS實(shí)現異步的基于消息的產(chǎn)品目錄傳輸。為了使得更多的其它外部交易市場(chǎng)能夠集成產(chǎn)品目錄和定購業(yè)務(wù),需要使用Web Services技術(shù)包裝商業(yè)邏輯的實(shí)現。由于產(chǎn)品定購管理需要由公司內部雇員進(jìn)行處理,因此需要集成公司內部的用戶(hù)系統和訪(fǎng)問(wèn)控制服務(wù)以方便雇員的使用,使用JACC集成內部的訪(fǎng)問(wèn)控制服務(wù),使用JNDI集成內部的用戶(hù)目錄,并使用JAAS進(jìn)行訪(fǎng)問(wèn)控制。由于產(chǎn)品訂購事務(wù)會(huì )觸發(fā)后續的企業(yè)ERP系統的相關(guān)操作(包括倉儲、財務(wù)、生產(chǎn)等),需要使用JCA連接企業(yè)ERP。
最后為了將這個(gè)應用納入到企業(yè)整體的系統管理體系中去,使用Application Client架構了一個(gè)管理客戶(hù)端(與其它企業(yè)應用管理應用部署在一臺機器上),并通過(guò)JMX管理這個(gè)企業(yè)應用。
【j2ee企業(yè)級應用開(kāi)發(fā)】相關(guān)文章:
Quartz開(kāi)發(fā)企業(yè)級任務(wù)調度應用08-22
j2ee應用技術(shù)開(kāi)發(fā)結構10-21
J2EE開(kāi)發(fā)原則10-18
J2EE應用的核心策略10-30
Eclipse j2ee開(kāi)發(fā)環(huán)境的搭建07-27
J2EE項目開(kāi)發(fā)風(fēng)險匯總08-03
高性能J2EE應用的技巧07-21