JavaBeans激活框架(JavaBeans Activation Framework)
JAF的目的在于统一处理不同数据格式的方法(不管数据格式为简单文本还是由图片、声音、视频甚至其它"活动"内容共同组成的复合文档)。在这个意义上,JAF对Java的作用正如插件对Web浏览器的作用。JAF使得Java对象与编码数据流之间的映射变得非常容易。
JAF完成于1998年,当时JavaBean非常流行,Swing非常热门,Servlet刚刚出现,J2EE平台还没有。那时Sun需要一个用于文件浏览器和JavaMail的标准发现API,此需要推动了JAF的创建。“发现”指可以动态找到正确的组件以处理任意但类型化了的数据的机制。特别是,作为发现API来开发JAF,以便使GUI开发人员能够为文档和图像数据动态地发现浏览器和编辑器。
发现取决于注册的类型,注册可以将每一文件类型与对应的应用程序建立关联。
简单的说,JAF提供了用于动态发现可视窗口部件以处理由MIME文件头描述的各种数据的架构。当用于SAAJ这样的非可视系统时,JAF可以将Java类型映射到将它们无缝转换到数据流的特殊处理程序,从而允许SAAJ将Java对象自动转换成由SwA MIME部分包含的原始数据。
1. DataHandler 类
JAF架构的核心是javax.activation.DataHandler类。DataHandler类定义了三个构造函数:
Public DataHandler(DataSource ds)
Public DataHandler(java.net.URL url)
Public DataHandler(Object obj, String mimeType)
当使用前两个构造函数时,数据处理会委托到DataSource接口的一个子类型,使用第三个构造函数时,数据处理委托到一个动态发现的内容处理程序并使用此处理程序。
如果DataHandler是用DataSource对象构造的,那么它将首先试图试图将getContent()方法委托到一个DCH,如果它没有找到DCH,会返回一个从DataSource中得到的InputStream。有趣的是,DataHandler总是试图首先委托到一个DCH,即便是用DataSource创建DataHandler也是如此。
上述说明的问题看似简单,但实际上非常重要,它说明了getContent()方法的作用。getContent()方法要返回一个表示附件的Java对象,DataSource的InputStream只作为最后一种手段来返回。从DCH中返回的对象类型取决于DCH的编码方式。
2. DataContentHandler类
此接口用于实现将Java对象流转换成数据流,或将数据流转换成Java对象。
DataContentHandler类型的每一个子类(即每一个DCH)均用于自动将Java对象的专用类型转换为流,以及将流转换成Java对象。如某个DCH能够将java.awt.Image对象转换为JPEG或GIF编码流,或者进行反向转换。DCH的缺点是它们的使用范围通常受到很大的限制,每一个DCH只能讲一个对象类型转换成一种类型的数据流。
与DCH不同,DataSource对象只处理数据流。用户要用DataSource从某种类型的资源中读数据流,并将数据流写入DataSource。,此时重点放在了流上而不是Java对象类型上。从而DataSource具有很大的通用性,其缺点为不宜于使用,因为用户直接处理的是流而不是Java对象。
3. DataSource 类
DataSource类拥有完成委托操作所需要的全部功能。当使用DataSource或URL参数构造DataHandler时,DataHandler要使用DataSource而不是DCH。
JAF定义了两个标准的DataSource对象,即FileDataSource对象和URLDataSource对象。 某些DataSource实现用于动态发现它们的MIME类型。例如,FileDataSource用MIME类型注册表发现它的MIME类型。JAF中的默认MIME类型注册表是mimetypes.default文件,该文件包含在JAF二进制JAR文件中。
分享到:
相关推荐
JAF1.1 demo
jaf诺基亚刷机工具
jaf-framework
jaf汉化版
JAF各项基本功能 关于jaf 出厂。格式化。读写PM。解锁 各种用法
Sun provides a royalty-free reference implementation of the JAF software, in binary form, that developers can use to develop JAF technology-enabled applications for any platform that supports the ...
jaf强刷教程 诺基亚手机jaf强刷教程
javamail包 以及供javamail运行的JAF框架
jaf-1.1.1-源码;jaf-1.1.1-源代码;jaf-1.1.1-sources
jaf-1.1.1.zip activation.jar.jar
JAF刷机教程通用版本文为通用JAF刷机教程,以诺基亚5230(RM-588,CODE:0587954)为例介绍JAF通用刷机方法,本教程仅含JAF下载链接,本教程默认你已经准备好对应的固件包,并且已经放到正确的文件夹下(通常是C:\...
我这里上传了两部分,jaf破解版和OGM_JAF_PKEY_Emulator_v4两个,专门用来NOKIA 手机 code 修改的功能,内部还有刷机说明,修改CODE说明
JAF刷机软件,刷机教程(5800XM):http://bbs.dospy.com/thread-6263097-1-245-1.html
内含JavaMail1.4.5官方包、JAF1.1.1官方包和JavaMailAPI详解文档。 !!!若文档有无法打开的情况,请将文档拷贝到C盘根目录再打开。
JAF刷机DCT-4教程!简简单单刷DCT4!
JAF精华教程
JAF官方的DCT-4使用手册(英文)JAF官方的DCT-4使用手册(英文)
自己整理的symban的刷机教程,jaf刷机教程,需要自己找工具,这个教程很详细了。
对于开发web内嵌mail 功能,所以加入struts1
JAF1.98.62稳定版本 诺基亚刷机专用系统(好用 干净)本人装此系统刷E71测试过很好用 推荐给大家 分享给第一次刷机的朋友这样就不用怕刷机系统有问题啦