明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

XML與J2EE的組合技術 (轉(zhuǎn))

[摘要]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)的對象模型中。