程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> J2EE創建多媒體管理軟件解決方案

J2EE創建多媒體管理軟件解決方案

編輯:關於JAVA

新的事務模型的目的是逐漸使最終用戶能夠用標准化的和常見的軟件管理、檢索和操作存儲的多媒體資源--例如相片、視頻和行情資料。在利用現有的內部技術來降低成本和產生利潤的時候,現有的媒體業務還用來實現訪問它們的多媒體資源的標准化值。盡管在過去幾年中存儲量、處理能力和軟件都有重大的發展,但是管理數字媒體資源仍然是一件代價相當高的事情。一些研究表明,大多數的多媒體文件是非結構化的資源;只有很少一部分存在於關系數據庫和現有的應用程序中。結構化的缺乏使有效地訪問和重新利用數字資源變得非常困難。

中間件平台--特別是應用程序服務器--總是處理數據資源的操作。在創建多媒體增強應用程序的過程中使用應用服務器好像是對這種技術固有強度的一種自然延伸。然而,和數字資源相關的大小、結構和元數據的基本的差異使你需要采用與J2EE平台創建的關系數據庫和已有資源不同的方式來操作。本文將從現在可用的和正在開發這兩個角度來探討創建多媒體應用程序所需要的標准和技術。我還將討論在存儲、索引、訪問和檢索多媒體資源的過程中J2EE所起到的作用,以期把這個平台的領域擴展到數字資源領域。最後,我還將探討J2EE平台必須解決的問題,以使用戶可以最優化地使用多媒體資源。

三個特性區分和定義了一個多媒體資源。在多媒體資源和已有的相關數據之間最大的基本差別是媒體文件的大小。雖然壓縮技術正在不斷地改善,但是復雜的視頻或者音頻數據流仍然動辄以千兆字節計。雖然現在已經有了存儲和管理極大數據流的數字內容管理系統,但是沒有用於訪問這些保存的資源的標准化應用程序編程接口或者機制。

還可以從結構上來區分多媒體資源和其他數據。一般來說,你可以把傳統資源作為單獨的組件來訪問和使用。但是多媒體資源可能包含若干個元素,例如視頻流、音頻流、相關的字幕信息和其他數據集。維護這個結構是數字資源管理系統的一個基本要求。

最後,多媒體文件通常由二進制信息組成。因此,傳統的查詢、索引和檢索文件的方法不適用於多媒體領域。為了應用程序能夠成功地管理、檢索並且操作一個多媒體組件,你必須維護數字資源和描述這種資源特征的元數據信息之間的關系。

諸如JDBC和JCA這樣的現有的J2EE平台規范闡明了用於數據訪問的協議,你可以遵循這些協議創建一個基於標准方法的程序來檢索多媒體資源。新的標准還必須進一步增強定義的J2EE組件模型的多媒體能力。

獲得多媒體和中間件平台之間最佳組合的方法主要在於你如何定義一個用於訪問數字資源的存儲抽象層。為了保持應用程序移植性,你必須利用或者擴展現有的標准來解決數字媒體存儲特性,比如插入、更新或者查詢資源。

圖⒈定義一個存儲抽象

WebDAV規范是一個對HTTP進行擴展的協議,用於解決數字媒體存儲大小、結構和元數據這三個方面(見圖1)。它提供了跨 Internet協議的分布式編輯和版本控制的能力,可以和現有的HTTP客戶端交互操作。WebDAV被使用在網絡存儲解決方案和Web服務器、許多編輯工具(包括微軟公司出品的Internet Explorer浏覽器、Apache Slide客戶端、Apple OS X Finder、Microsoft Office、和Adobe應用程序)和大部分的操作系統中。許多解決多媒體存儲的內容管理產品支持WebDAV。例如Apache Slide體系機構使用WebDAV作為客戶端訪問協議。Slide提供一個抽象層,允許對機制類型的選擇用於所有它的存儲,包括內容和元數據。這把內存存儲、數據庫存儲、基於XML的存儲等考慮進去。

惠普多媒體平台和Apache Slide工程利用WebDAV協議和所提供的關聯的客戶機和服務器應用程序編程接口來創建數字存儲抽象功能。這種解決方案提供一個使用規格化、標准化和簡單方式訪問多後端內容管理程序的方法。這些平台提供了像WebDAV servlet這樣的Web組件讓開發者和任何WebDAV服務器接口,把許多WebDAV服務器整合到一個聯合內容服務器中,或者創建基於請求信息的自定義解決方案。你可以使用HP WebDAV servlet和可以截取WebDAV請求和在存儲和檢索操作期間執行數據處理的servlet過濾器同時使用。有用的操作包括元數據和內容的提取、變換或者索引。

通過利用標准化J2EE組件,你可以創建一個可伸縮和容錯的基於中間件的內容管理系統。例如,你可以聯合WebDAV servlet、相關的處理過濾器和Apache Slide來生成一個內容服務器,能夠存儲文件、這些文件附屬的元數據屬性和基於元數據屬性的文件的搜索。這樣一個系統在J2EE應用程序體系結構平台上執行,並且可以使用平台的性能、可伸縮性、安全和可移植性等特性。

客戶端的存儲器接口還可以利用J2SE和 J2EE這兩個版本的屬性和設備。因為URL設置被構建進J2SE平台中,你可以在Java虛擬機中安裝一個WebDAV協議處理程序來簡化到WebDAV內容管理系統的客戶接口。J2EE組件可以潛在地利用JCA連接器實現來創建存儲企業組件和應用程序。例如HP多媒體平台的WebDAV連接器訪問遵從WebDAV協議的服務器作為企業資源:

ConnectionSpec spec;
ConnectionFactory factory;
WebDAVConnection conn;
factory =(ConnectionFactory)ctx.lookup("java:comp/env/webdav/local" );
spec = new WebDAVConnectionSpec("/", "username", "password" );
conn = (WebDAVConnection)connectionFactory.getConnection
( spec );

發現和訪問

一旦你已經創建一個基於標准Java的機制來用於存儲和檢索多媒體資源,你需要一個查詢和發現存儲的文件的方法來創建增強的多媒體應用程序。元數據的關鍵用途是改善信息的查詢和檢索。元數據實質上是關於信息的信息;它提供或者訪問關於另一個信息資源的信息。在多媒體的上下文中,元數據簡化了發現的訪問數字內容的過程。

各種元數據標准分別在某些信息領域解決不同的問題。Dublin Core元數據標准被開發來提供一個描述文檔,象HTML文檔、PDF文件和圖像這樣的資源的標准方法。它已經被擴展,現在庫、檔案和聯機內容的發行者使用Dublin Core作為一種通用的元數據標准。

Dublin Core標准描述了適用於在很寬的資源范圍內的描述性元素的小集合。這些元素包括象標題、創建者、主題、日期、格式和語言等屬性。即使還沒有元數據表達機制被普遍接受,但是Dublin Core項目已經采用了資源描述框架( RDF)。RDF提供了一個描述和交換元數據的方法。這那些框架支持元數據與支持用於語義、語法和結構的標准協定機制的互操作性。RDF不強制用於不同資源描述共同體的語義。取而代之的是,它提供了用於這些團體來根據需要定義新的元數據元素的方法。RDF通常使用XML作為一種元數據交換和處理的機制。XML的使用促進了元數據元素集合之間的互操作性,以及在完全不同的團體之間的擴展名和元數據的再使用。此外,RDF簡化了詞匯的發布,不僅能使詞匯被人閱讀而且可以很容易地被應用程序處理。

列表1:

<?xml version='1.0'?>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/
02/22-rdf-syntax-ns#'
xmlns:rdfs= 'http://www.w3.org/2000/01/
rdf-schema#'
xmlns:hp='http://www.hpmiddleware.com/xml/
namespaces/metadata-java-1.0#'>
<rdf:Property rdf:about="http://
www.hpmiddleware.com/rdf/maiden/1.0#name">
<rdfs:isDefinedBy rdf:resource="http://
www.hpmiddleware.com/rdf/maiden/1.0#" />
<hp:datatype>java.lang.String</hp:datatype>
</rdf:Property>
<rdf:Property rdf:about="http://
www.hpmiddleware.com/rdf/maiden/1.0#title">
<rdfs:isDefinedBy rdf:resource="http://
www.hpmiddleware.com/rdf/maiden/1.0#" />
<hp:datatype>java.lang.String</hp:datatype>
</rdf:Property>
</rdf:RDF>

列表1是描述兩個元數據屬性的RDF文檔示例:name和title。<rdf:Property>節點定義了元數據資源。rdf:about屬性標識了元數據資源。(你總是通過一個URI描述一種資源。)<rdfs:isDefinedBy>元素指出定義了相關元數據資源的資源。這兩個元素共同描述了元數據資源的語義。在列表1中?maiden/1.0#域名空間定義了name元數據屬性。<hp:datatype>元素定義了元數據資源的本地Java類型。在列表1中,name元數據資源的本地Java類型是java.lang.String。

許多容器模型已經被提出來用於訪問各種可能存在的用於描述日益不同的資源的元數據集合。這樣一個提議是Warwick Framework。Warwick Framework提出了一個容器體系機構的概念模型,在其中你可以部署多個元數據集合,例如你已經習慣於用於創建企業應用程序來使用地現有的應用程序組件。這個框架的特定實現必須提供一個用於處理容器和它的元數據包的實際方法。

圖2、實現Warwick Framework容器

圖2顯示了Warwick Framework容器的典型的Java實現。這個框架使用了一種普通的方法描述了元數據集合中的屬性之間的關系,這樣你就可以部署你可以在不同平台上實現的不同容器的描述。此外,你使用一種本地類型綁定描述(特別是對於一種程序設計語言)來生成實現綁定的代碼。一個存儲綁定允許在多個元數據集合中的屬性來映射到存儲的單一值(canonical屬性)。存儲綁定的一部分定義了所需的代碼轉換來轉換存儲中編碼的屬性值為用於指定的元數據集合的固有的編碼。

一個客戶應用程序使用Warwick Framework實現來調用容器自己、保存屬性值的對象和部署到容器上的任何元數據集合。一個Java名稱和目錄接口( JNDI)查找可以獲得到容器的引用。一個配置的存儲驅動程序管理屬性值的持續性。一個低級的存儲層提供了元數據屬性的本體類型綁定。面向客戶端的元數據集合應用編程接口不僅使用合適的本地類型而且使用用於元數據集合的合適的編碼來傳遞屬性值。

列表2:

package metadataset;
import com.hp.mw.richmedia.metadata.*;
import com.hp.mw.richmedia.metadata.spi.TranscodingMetadataProperty;
public interface MaidenAppSample extends
 com.hp.mw.richmedia.metadata.MetadataSet {
  public static final TranscodingMetadataProperty
   NAME_METADATA_PROPERTY =
    new TranscodingMetadataProperty("http://www.hpmiddleware.com/rdf/maiden/1.0#name" );
  public static final TranscodingMetadataProperty
   TITLE_METADATA_PROPERTY =
    new TranscodingMetadataProperty("http://www.hpmiddleware.com/rdf/maiden/1.0#title" );
  public void addName( java.lang.String name ) throws MetadataException;
  public PropertyValueCollection getNameCollection() throws MetadataException;
  public void setName( java.lang.String name ) throws CardinalityConstraintException,
MetadataException;
 public java.lang.String getFirstName() throws MetadataException;
 public void addTitle( java.lang.String title ) throws MetadataException;
 public PropertyValueCollection getTitleCollection() throws MetadataException;
 public void setTitle( java.lang.String title ) throws CardinalityConstraintException,
MetadataException;
 public java.lang.String getFirstTitle() throws MetadataException;
}

列表2說明了一個Warwick Framework生成的面向客戶端的應用編程接口的示例。列表3中的JSP代碼說明了你如何通過JNDI查找、檢索元數據集合對象和查詢用於name元數據屬性的值的對象來訪問Warwick Framework。

列表3:

<%@ page ?>
<% Hashtable env = new Hashtable();
env.put( Context.URL_PKG_PREFIXES,
"com.hp.mw.richmedia" );
InitialContext ctx = new InitialContext( env );
MetadataContainer container =
( MetadataContainer ) ctx.lookup(
"metadata:/metadata-container.xml" );
MetadataQuery query = container.createQuery(
new URIQuerySpec( "http://
www.hpmiddleware.com/maiden/1.0/
testresource" ) );
Collection c = container.query( query );
Iterator itor = c.iterator();
MetaObject mo = ( MetaObject ) itor.next();
MaidenAppSample sampleMetadataSet =
( MaidenAppSample )
container.getMetadataSet( mo,
"http://www.hpmiddleware.com/rdf/
maidenapp/sample/1.0#" );
PropertyValueCollection pvc =
sampleMetadataSet.getNameCollection();
out.println( "<br><h3>Values for the name
property?</h3><br>" );
itor = pvc.iterator();
while ( itor.hasNext() )
out.println( ( String ) itor.next() + "<br>" );
%>

我已經細節說明的存儲組件和元數據組件簡化了基於標准、多媒體增強的應用程序的創建。這些組件提供了使用你熟悉J2EE開發機制來存儲、查詢和檢索多媒體元素的能力。因此,你不僅可以把現有的和新的J2EE應用程序中的上下文的多媒體內容提供給最終用戶,而且可以利用這個平台來創建支持新媒體組件的生成的應用程序。

例如,你可以通過集合媒體組件到同步多媒體集成語言( Synchronized Multimedia Integration Language,SMIL)來組裝一個促進媒體表現得交互創建的基於Web的應用程序。( SMIL是一個提供根據時間線計劃音頻、視頻、文本和圖形文件的標注語言。)另一個例子是一個簡化提取、審查和最終發布多媒體內容的門戶。這兩個應用程序可以通過利用標准J2EE組件,例如JSP、servlets和Enterprise Java Beans來在多媒體生命周期中確定關鍵階段。

圖⒊EMB組件和從屬物

除了利用現有的組件之外,Java開發者團體還在探索如何擴展現有的Java平台的范圍來在多媒體資源生成中擔任一個更重要的角色。JCP的許多創新能解決現有的Java平台中的一些多媒體處理的不足。

Enterprise Media Bean

Enterprise Media Bean ( EMB) Java規范請求解決了多媒體數據的操作和應用。EMB規范工作推出了一個基於組件的體系機構,用於把多媒體數據無縫集成到基於J2EE程序設計模型的應用程序中。(參見圖3)。這個規范提出了兩個組件類型。第一個組件Media Foundation Bean提供了一些基本的服務(比如頭標的提取)來提供一個標准和輕量級方法來在J2EE應用程序中包含基本的多媒體相關特性。相反,第二組件Media Entity Bean依靠EJB實體bean並且因此用於基於EJB體系結構的應用程序。這些Media Entity Bean基本上是持久的、遠程的和易變的模型數據的實體bean。因此,它們擴展了標准EJB事務和安全模型到媒體數據中,提供了一個服務器端協議處理程序(例如流服務器)的抽象。

此外,JCP調查訪問內容存儲的標准方法。現在,客戶應用程序必須使用一個供應商的專有的應用編程接口來與特定的內容容器相互作用。Content Repository for Java Technology應用編程接口將集中於事務讀/寫訪問二進制內容(流操作)、文本內容、全文搜索、過濾、監視、版本控制和處理結構化內容。

除現有的JCP創新來擴展J2EE平台之外,補充的擴展被要求允許平台在創建多媒體數據的過程中擔任更基本的角色。為了J2EE應用程序能夠參與圖像處理,應該定義輔助容器,允許部署的組件訪問當前不可用於EJBs或者servlets的工具。例如,圖像過程組件需要大量產生多線程的能力來處理各種並發數據流,並且最終合並結果。一個允許創建這種類型處理組的容器將允許J2EE平台來在多媒體領域中扮演一個更重要的角色。

開發者現在有與他們現在整合數據庫和以前遺留信息所使用的大致相同的方式來尋找和包含多媒體資源的選擇。因為這些技術已經成熟並且標准化,用於提高J2EE應用程序使用者的用戶經驗的潛在能力極大增強。Java團體和中間件供應商必須利用這些潛在能力使J2EE平台成為一個對於更有辨別能力的用戶市場來說更可行的選擇。

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