JAF全称是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 (DataContextHandler),如果它没有找到 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 文件中。
分享到:
相关推荐
1. **JAF简介** JAF,全称为Java Application Farm,最初由P phoenix团队开发,是一个功能强大的诺基亚手机解决方案。JAF1.98.62稳定版作为其经典版本,主要服务于那些希望自定义或修复诺基亚手机的用户。它提供了一...
- `README.txt`: 项目说明文件,通常包含项目简介、安装指南和开发者联系方式等信息。 综上所述,JAF CMS 是一款面向个人和小型站点的优秀开源CMS,它的设计思路和实现特点为用户提供了一种高效、简便的网站管理...
jaf工具简介 jaf(Java Application Framework)是一种基于Java的应用程序框架,提供了一系列的工具和API,用于开发和测试移动设备应用程序。在诺机JAR修改code汇总.pdf文件中,jaf工具被用于修改诺机的code。 ...
- **简介**:JAF提供了一组API,用于处理用户的认证和授权。 - **应用场景**:实现用户登录、权限控制等功能。 #### 三、技术间的交互 在实际应用中,这些技术往往是相互依赖、协同工作的。例如,一个Web应用可能...
在 WebLogic 应用服务器中,JAF 提供了一种统一的方式来管理应用的安全性。 综上所述,J2EE 平台通过提供这 13 种核心技术,为企业级应用开发提供了一套完整而强大的框架。WebLogic 应用服务器作为 J2EE 的一个具体...
7. **JAF(JavaBeans Activation Framework)**:JAF用于处理MIME类型和消息激活,支持电子邮件和其他消息传递系统。 8. **JCA(Java Connector Architecture)**:JCA为连接各种企业信息系统的标准接口,使得J2EE...
- **简介**:JAF 是一个基于 J2EE 的应用框架,它提供了一系列工具和服务来简化应用的开发。 - **应用场景**:JAF 主要用于简化企业应用的开发过程,减少重复编码的工作量。 #### 三、技术间的协作机制 在 J2EE ...
- **简介**:JAF提供了一种机制,用于确定如何处理接收到的MIME数据。 - **应用场景**:JAF用于处理接收到的数据,如电子邮件附件等。 - **与其他技术的交互**:JAF通常与JavaMail等技术结合使用,以处理接收到的...
- **简介**:JAF用于处理MIME编码的数据,可以将MIME字节流转换为Java对象。 - **特点**: - 数据处理:提供了处理MIME编码数据的能力。 - 简化开发:简化了邮件附件的处理流程。 - 集成性:通常与JavaMail一起...
2. **下载 JAF (JavaBeans Activation Framework)**:搜索并下载 JAF 包 `jaf-1_1-fr.zip`。解压后,将其中的 `activation.jar` 文件同样复制到项目的 `WEB-INF/lib` 目录下。 3. **重启 Tomcat 服务器**:完成以上...
#### 一、JavaMail API简介 **JavaMail API** 是由SUN公司(现已被Oracle收购)为Java开发者提供的一个公共API框架,用于在Java应用中实现电子邮件功能的支持。它的设计遵循了开放性原则,避免了对特定供应商解决...
1. J2EE简介与架构 2. Servlet和JSP基础 3. EJB基本概念与应用 4. JMS消息传递 5. JNDI、JTA与JAF介绍 6. JPA与数据库交互 7. 应用服务器配置与部署 8. 实战项目案例分析 通过这个课件的学习,初学者能够对J2EE有一...
### SQL Server 2008 递归查询简介 #### 什么是递归查询? 递归查询是指在SQL查询中重复执行相同的操作直到满足特定条件为止的过程。这种查询非常适合于处理层次结构的数据模型,如组织结构、文件系统等。 #### ...
#### 一、JavaMail 技术简介 JavaMail API 是一个用于阅读、编写和发送电子邮件的可选包(标准扩展),主要用于构建基于标准的电子邮件客户端。它支持多种互联网邮件协议,包括但不限于 SMTP(简单邮件传输协议)、...
J2EE的十三种核心技术包括EJB、Servlets、JSP、JMS(Java Message Service)、JTA(Java Transaction API)、JNDI(Java Naming and Directory Interface)、JAF(JavaBeans Activation Framework)、JCA(Java ...