XML與J2EE的組合技術 (轉(zhuǎn))
發(fā)表時間:2024-06-21 來源:明輝站整理相關軟件相關文章人氣:
[摘要]XML和J2EE的組合技術2001-05-09· 布老虎·小龍亭 當前,Java 2平臺企業(yè)版(J2EE)架構(gòu)在廠商市場和開發(fā)者社區(qū)中倍受推崇。作為一種工具,可擴展標記語言(XML)簡化了數(shù)據(jù)交換、進程間消息交換這一類的事情,因而對開發(fā)者逐漸變得有吸引力,并開始流行起來。自然...
XML和J2EE的組合技術
2001-05-09· 布老虎·小龍亭
當前,Java 2平臺企業(yè)版(J2EE)架構(gòu)在廠商市場和開發(fā)者社區(qū)中倍受推崇。作為一種工具,可擴展標記語言(XML)簡化了數(shù)據(jù)交換、進程間消息交換這一類的事情,因而對開發(fā)者逐漸變得有吸引力,并開始流行起來。自然,在J2EE架構(gòu)中訪問或集成XML解決方案的想法也很誘人。因為這將是強大系統(tǒng)架構(gòu)同高度靈活的數(shù)據(jù)管理方案的結(jié)合。
XML的應用似乎是無窮無盡的,但它們大致上可以分為三大類:
* 簡單數(shù)據(jù)的表示和交換(針對XML的簡單API(SAX)和文檔對象模型(DOM)語法解析,不同的文檔類型定義(DTDs)和概要(schemas))
* 面向消息的計算(XML-RPC(遠程過程調(diào)用),SOAP協(xié)議,電子化業(yè)務XML(ebXML))
* 用戶界面相關、表示相關的上下文(可擴展樣式表語言(XSL),可擴展樣式表語言轉(zhuǎn)換(XSLT))
這幾類應用在J2EE架構(gòu)中恰好有天然的對應:數(shù)據(jù)表示和交換功能是EJB組件模型中持久化服務(persistence services)的一部分,基于消息的通訊由Java消息服務(JMS)API來處理,而界面表示正是Java服務器頁面(JSP)和Java Servlets的拿手好戲。
在本文中,我們將看到當今基于J2EE的應用里,XML是如何在上述幾個方面進行應用的,以及在相關標準的未來版本中這些應用將會如何發(fā)展。
基礎:數(shù)據(jù)的表示和交換
原型化的XML應用(假設有的話)的內(nèi)容通常是:數(shù)據(jù)以XML格式存放,為了進行顯示、修改甚至寫入某個XML文檔而經(jīng)常被讀入到某個對象模型中。作為例子,假定我們正處理多種類型的媒體(圖品、視頻、文本文檔等等),并且用下面這個簡單的XML DTD來描述這些媒體的元數(shù)據(jù):
。!-- DTD for a hypothetical media management system -->
<!-- Media assets are the root of the object hierarchy. Assets are also
hierarchical - they can contain other assets. -->
。!ELEMENT media-asset (name, desc?, type*, media-asset*, urn)>
。!-- Metadata about the asset -->
<!ELEMENT name (#PCDATA)>
。!ELEMENT desc (#PCDATA)>
。!ELEMENT type (desc, mime-type?)>
。!ELEMENT mime-type (#PCDATA)>
。!ELEMENT urn (#PCDATA)>
以下是一個基于上述媒體DTD的XML文檔,描述了與某個課程講座相關的內(nèi)容:
。?xml version="1.0" ?><!DOCTYPE media-asset PUBLIC "-//Jim Farley//DTD Media Assets//EN" "http://localhost/Articles/Sun/dtds/media.dtd">
<media-asset>
。糿ame>第14講</name>
。糳esc>與第14講相關的所有內(nèi)容</desc>
。!-- 內(nèi)容對象"lecture 14"的一套子組件 -->
。糾edia-asset>
<name>講座的幻燈片</name>
。紅ype>
<desc>MS PowerPoint</desc>
。糾ime-type>application/vnd.ms-powerpoint</mime-type>
。/type>
。紆rn>http://javatraining.org/jaf/E123/lecture-14/slides.ppt</urn>
。/media-asset>
。糾edia-asset>
。糿ame>講座的視頻片斷</name>
。紅ype>
。糳esc>RealPlayer streaming video</desc>
<mime-type>video/vnd.rn-realvideo</mime-type>
。/type>
。紆rn>http://javatraining.org/jaf/E123/lecture-14/lecture.rv</urn>
。/media-asset>
。!-- 講座開始 -->
。紆rn>http://javatraining.org/jaf/E123/lecture-14/index.jsp</urn>
</media-asset>
從Web或者企業(yè)級應用的角度看,能以這種方式訪問數(shù)據(jù)真是一種福音,因為它體現(xiàn)了高度的可移動性,使我們與元數(shù)據(jù)的實際資源本身隔離。這些資源可能來自一個關系數(shù)據(jù)庫系統(tǒng)、某種活動媒體服務器或者Web服務器上的一個靜態(tài)XML文檔,等等。如果想把這些數(shù)據(jù)加載到Java應用中,我們可以從當前眾多的Java語言XML解析器中選用一個,通過它將XML數(shù)據(jù)裝入一個DOM文檔,最后遍歷文檔,將所有這些數(shù)據(jù)轉(zhuǎn)換到我們應用系統(tǒng)的對象模型中。