XML和J2EE的組合技術(轉)

     當前,Java 2平臺企業版(J2EE)架構在廠商市場和開發者社區中倍受推崇。作爲一種工具,可擴展標記語言(XML)簡化了數據交換、進程間消息交換這一類的事情,因而對開發者逐漸變得有吸引力,並開始流行起來。自然,在J2EE架構中訪問或集成XML解決方案的想法也很誘人。因爲這將是強大系統架構同高度靈活的數據管理方案的結合。

  XML的應用似乎是無窮無盡的,但它們大致上可以分爲三大類:

  * 簡單數據的表示和交換(針對XML的簡單API(SAX)和文檔對象模型(DOM)語法解析,不同的文檔類型定義(DTDs)和概要(schemas))

  * 面向消息的計算(XML-RPC(遠程過程調用),SOAP協議,電子化業務XML(ebXML))

  * 用戶界面相關、表示相關的上下文(可擴展樣式表語言(XSL),可擴展樣式表語言轉換(XSLT))

  這幾類應用在J2EE架構中恰好有天然的對應:數據表示和交換功能是EJB組件模型中持久化服務(persistence services)的一部分,基於消息的通訊由Java消息服務(JMS)API來處理,而界面表示正是Java服務器頁面(JSP)和Java Servlets的拿手好戲。

  在本文中,我們將看到當今基於J2EE的應用裏,XML是如何在上述幾個方面進行應用的,以及在相關標準的未來版本中這些應用將會如何發展。

  基礎:數據的表示和交換

  原型化的XML應用(假設有的話)的內容通常是:數據以XML格式存放,爲了進行顯示、修改甚至寫入某個XML文檔而經常被讀入到某個對象模型中。作爲例子,假定我們正處理多種類型的媒體(圖品、視頻、文本文檔等等),並且用下面這個簡單的XML DTD來描述這些媒體的元數據:

  <!-- 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文檔,描述了與某個課程講座相關的內容:

  <?xml version="1.0" ?><!DOCTYPE media-asset PUBLIC "-//Jim Farley//DTD Media Assets//EN" "http://localhost/Articles/Sun/dtds/media.dtd">
  <media-asset>
  <name>第14講</name>
  <desc>與第14講相關的所有內容</desc>
  <!-- 內容對象"lecture 14"的一套子組件 -->
  <media-asset>
  <name>講座的幻燈片</name>
  <type>
  <desc>MS PowerPoint</desc>
  <mime-type>application/vnd.ms-powerpoint</mime-type>
  </type>
  <urn>http://javatraining.org/jaf/E123/lecture-14/slides.ppt</urn>
  </media-asset>
  <media-asset>
  <name>講座的視頻片斷</name>
  <type>
  <desc>RealPlayer streaming video</desc>
  <mime-type>video/vnd.rn-realvideo</mime-type>
  </type>
  <urn>http://javatraining.org/jaf/E123/lecture-14/lecture.rv</urn>
  </media-asset>
  <!-- 講座開始 -->
  <urn>http://javatraining.org/jaf/E123/lecture-14/index.jsp</urn>
  </media-asset>

  從Web或者企業級應用的角度看,能以這種方式訪問數據真是一種福音,因爲它體現了高度的可移動性,使我們與元數據的實際資源本身隔離。這些資源可能來自一個關係數據庫系統、某種活動媒體服務器或者Web服務器上的一個靜態XML文檔,等等。如果想把這些數據加載到Java應用中,我們可以從當前衆多的Java語言XML解析器中選用一個,通過它將XML數據裝入一個DOM文檔,最後遍歷文檔,將所有這些數據轉換到我們應用系統的對象模型中。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章