隨筆-128  評(píng)論-55  文章-5  trackbacks-0

          The JavaBeans Activation Framework 1.1 contains a few small enhancements and bugs fixes. The enhancements are described here and have been approved by the JCP as JSR-925. The primary enhancements are:

          • Provide a list of all MIME types known to a MailcapCommandMap.
          • Provide access to the native commands known to a MailcapCommandMap.
          • Support for fallback entries in mailcap file.

          The JavaBeans Activation Framework 1.1 requires J2SE 1.4 or greater.

          The JavaBeans Activation Framework 1.1 final release is included with the Java SE 6 release and the Java EE 5 release, and is also available separately.

          For a detailed description see the jaf-changes.txt document.

                               ... ...

          JavaBeans Activation Framework(JAF)主頁(yè)    http://java.sun.com/beans/glasgow/jaf.html 




          JavaBeans激活框架JavaBeans Activation Framework

                 JAF的目的在于統(tǒng)一處理不同數(shù)據(jù)格式的方法(不管數(shù)據(jù)格式為簡(jiǎn)單文本還是由圖片、聲音、視頻甚至其它"活動(dòng)"內(nèi)容共同組成的復(fù)合文檔)。在這個(gè)意義上,JAF對(duì)Java的作用正如插件對(duì)Web瀏覽器的作用。JAF使得Java對(duì)象編碼數(shù)據(jù)流之間的映射變得非常容易。

                 JAF完成于1998年,當(dāng)時(shí)JavaBean非常流行,Swing非常熱門(mén),Servlet剛剛出現(xiàn),J2EE平臺(tái)還沒(méi)有。那時(shí)Sun需要一個(gè)用于文件瀏覽器和JavaMail的標(biāo)準(zhǔn)發(fā)現(xiàn)API,此需要推動(dòng)了JAF的創(chuàng)建。“發(fā)現(xiàn)”指可以動(dòng)態(tài)找到正確的組件以處理任意但類(lèi)型化了的數(shù)據(jù)的機(jī)制。特別是,作為發(fā)現(xiàn)API來(lái)開(kāi)發(fā)JAF,以便使GUI開(kāi)發(fā)人員能夠?yàn)槲臋n和圖像數(shù)據(jù)動(dòng)態(tài)地發(fā)現(xiàn)瀏覽器和編輯器。

                 發(fā)現(xiàn)取決于注冊(cè)的類(lèi)型,注冊(cè)可以將每一文件類(lèi)型與對(duì)應(yīng)的應(yīng)用程序建立關(guān)聯(lián)。

                 簡(jiǎn)單的說(shuō),JAF提供了用于動(dòng)態(tài)發(fā)現(xiàn)可視窗口部件以處理由MIME文件頭描述的各種數(shù)據(jù)的架構(gòu)。當(dāng)用于SAAJ這樣的非可視系統(tǒng)時(shí),JAF可以將Java類(lèi)型映射到將它們無(wú)縫轉(zhuǎn)換到數(shù)據(jù)流的特殊處理程序,從而允許SAAJJava對(duì)象自動(dòng)轉(zhuǎn)換成由SwA MIME部分包含的原始數(shù)據(jù)

           

          1.       DataHandler 類(lèi)

                 JAF架構(gòu)的核心是javax.activation.DataHandler類(lèi)。DataHandler類(lèi)定義了三個(gè)構(gòu)造函數(shù):

                 Public DataHandler(DataSource ds)

                 Public DataHandler(java.net.URL url)

                 Public DataHandler(Object obj, String mimeType)

                 當(dāng)使用前兩個(gè)構(gòu)造函數(shù)時(shí),數(shù)據(jù)處理會(huì)委托到DataSource接口的一個(gè)子類(lèi)型,使用第三個(gè)構(gòu)造函數(shù)時(shí),數(shù)據(jù)處理委托到一個(gè)動(dòng)態(tài)發(fā)現(xiàn)的內(nèi)容處理程序并使用此處理程序。

                 如果DataHandler是用DataSource對(duì)象構(gòu)造的,那么它將首先試圖試圖將getContent()方法委托到一個(gè)DCH,如果它沒(méi)有找到DCH,會(huì)返回一個(gè)從DataSource中得到的InputStream。有趣的是,DataHandler總是試圖首先委托到一個(gè)DCH,即便是用DataSource創(chuàng)建DataHandler也是如此

                 上述說(shuō)明的問(wèn)題看似簡(jiǎn)單,但實(shí)際上非常重要,它說(shuō)明了getContent()方法的作用。getContent()方法要返回一個(gè)表示附件的Java對(duì)象,DataSourceInputStream只作為最后一種手段來(lái)返回。從DCH中返回的對(duì)象類(lèi)型取決于DCH的編碼方式。

           

          2.       DataContentHandler類(lèi)

                 此接口用于實(shí)現(xiàn)將Java對(duì)象流轉(zhuǎn)換成數(shù)據(jù)流,或?qū)?shù)據(jù)流轉(zhuǎn)換成Java對(duì)象。

                 DataContentHandler類(lèi)型的每一個(gè)子類(lèi)(即每一個(gè)DCH)均用于自動(dòng)將Java對(duì)象的專(zhuān)用類(lèi)型轉(zhuǎn)換為流,以及將流轉(zhuǎn)換成Java對(duì)象。如某個(gè)DCH能夠?qū)?/span>java.awt.Image對(duì)象轉(zhuǎn)換為JPEGGIF編碼流,或者進(jìn)行反向轉(zhuǎn)換。DCH的缺點(diǎn)是它們的使用范圍通常受到很大的限制,每一個(gè)DCH只能講一個(gè)對(duì)象類(lèi)型轉(zhuǎn)換成一種類(lèi)型的數(shù)據(jù)流

                 DCH不同,DataSource對(duì)象只處理數(shù)據(jù)流。用戶(hù)要用DataSource從某種類(lèi)型的資源中讀數(shù)據(jù)流,并將數(shù)據(jù)流寫(xiě)入DataSource。,此時(shí)重點(diǎn)放在了流上而不是Java對(duì)象類(lèi)型上。從而DataSource具有很大的通用性,其缺點(diǎn)為不宜于使用,因?yàn)橛脩?hù)直接處理的是流而不是Java對(duì)象。

           

          3.       DataSource 類(lèi)

                 DataSource類(lèi)擁有完成委托操作所需要的全部功能。當(dāng)使用DataSourceURL參數(shù)構(gòu)造DataHandler時(shí),DataHandler要使用DataSource而不是DCH

                 JAF定義了兩個(gè)標(biāo)準(zhǔn)的DataSource對(duì)象,即FileDataSource對(duì)象和URLDataSource對(duì)象。     某些DataSource實(shí)現(xiàn)用于動(dòng)態(tài)發(fā)現(xiàn)它們的MIME類(lèi)型。例如,FileDataSourceMIME類(lèi)型注冊(cè)表發(fā)現(xiàn)它的MIME類(lèi)型。JAF中的默認(rèn)MIME類(lèi)型注冊(cè)表是mimetypes.default文件,該文件包含在JAF二進(jìn)制JAR文件中。


           



          Author: orangelizq
          email: orangelizq@163.com

          歡迎大家訪(fǎng)問(wèn)我的個(gè)人網(wǎng)站 萌萌的IT人
          posted on 2007-07-27 22:34 桔子汁 閱讀(2227) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): J2EE

          評(píng)論:
          # re: JAF 學(xué)習(xí) 2007-11-04 22:12 | shoh-bala
          jaf怎么升級(jí)  回復(fù)  更多評(píng)論
            
          # re: JAF 學(xué)習(xí) 2007-11-05 10:23 | orangelizq
          JAF就是個(gè)JAR包,可導(dǎo)入工程,可以下載最新版的JAR包導(dǎo)入就行  回復(fù)  更多評(píng)論
            
          # re: JAF 學(xué)習(xí) 2007-11-11 22:00 | JAF 學(xué)習(xí)
          JAF就是個(gè)JAR包  回復(fù)  更多評(píng)論
            
          # re: JAF 學(xué)習(xí) 2007-11-14 12:10 | makkkj
          主站蜘蛛池模板: 文登市| 车致| 永安市| 云浮市| 肃南| 灌云县| 新蔡县| 田阳县| 金沙县| 香格里拉县| 太保市| 和田县| 喜德县| 武穴市| 青冈县| 峨山| 新田县| 西乌珠穆沁旗| 宁蒗| 堆龙德庆县| 恭城| 治县。| 唐海县| 夏邑县| 府谷县| 东宁县| 巴东县| 西乡县| 临汾市| 来安县| 万山特区| 安福县| 布尔津县| 开化县| 广东省| 崇左市| 资中县| 仁怀市| 江油市| 封开县| 诏安县|