Seam无缝集成:为JSF定做应用程序框架

JavaServer Faces (JSF) 是用于 Java Web 应用程序的第一个标准化的用户界面框架。

而 Seam 是一个扩展 JSF 的强大的应用程序框架。在这个由三部分组成的新系列中的第一篇文章中,发现这两种框架之间的互补性。Dan Allen 介绍了 Seam 对 JSF 生命周期的增强,包括上下文状态管理、 RESTful URL、Ajax remoting、适当的异常处理和约定优于配置。

JSF 正开始凭借其 Java Web 标准的地位主导 Java Web 应用程序市场。随着更多的开发人员受托使用 JSF 作为基础来架构应用程序,他们发现 JSF 的核心规范中清楚地说明: JSF 不是为成为一个完整的 Web 应用程序框架而设计的。相反,它提供一个健壮的、事件驱动的 API 和 UI 组件库,用于构建更复杂的应用程序框架。

我在寻找用于弥补 JSF 的组件驱动架构的扩展时,发现 Shale 和 Struts 2 都有不足之处。我排除了 Struts 2,因为它将 JSF 看作是面向更大范围的设计。而 Shale 似乎更靠近一些,它基本上是基于 JSF,但是 对此我持保留意见。相反,JBoss Seam 是一个全面的应用程序框架,它构建在 JSF 的基础上,但是并没有损害它的核心目标。

这个由三部分组成的系列将介绍 Seam 应用程序框架,演示它的优点,并希望使您相信它与 JSF 是开发 Java 企业应用程序的极好的组合。在阅读本系列之前,如果您想下载 Seam,那么请阅读 参考资料 一节。

寻找 Seam

刚刚阅读到关于 JBoss Seam 的文章(见 参考资料)的第一页,我就知道 Seam 正是我要找的项目。Seam 的开发人员,尤其是 Gavin King,在经过足够多的、实际的开发之后,知道一个 Web 应用程序框架必须从一开始就攻破难题,包括上下文状态管理、RESTful 和用户友好的 URL、Ajax remoting、适当的异常处理和约定优于配置。令 Java 开发人员欣喜的是,Seam 可以满足所有这些需求,甚至可以满足更多需求。如果您正使用 JSF,并且还没听说过 Seam,那么我强烈建议您看看 Seam 的参考文档(见 参考资料)。Seam 附带的手册就是最好的资料!

尽管 Seam 显然非常适合作为 JSF 的补充,但是在激烈的竞争环境中,它遭到了一定程度的轻视。当今市场中充斥着各种各样的 Web 应用程序框架 —— 包括 Shale 和 Struts 2,新来者往往不受重视,Seam 还没有在主流行列站稳脚跟。 Seam 没有很快流行的另一个原因是关于这种框架的某些流言使 Java 开发人员没能认识到它的直接优点。

我要粉碎的一个流言是:Seam 只有和 EJB 3 一起使用时才有用,或者说在使用 Seam 开发应用程序时需要一个 EJB3 容器。实际上,Seam 的文档清楚地驳斥了这种误解:"Seam 并不要求组件是 EJB,甚至在没有兼容 EJB 3.0 的容器时也能使用。" 如果说只有在使用 EJB 3 的同时才能使用 Seam,那么无异于说只有在使用 Hibernate 的同时才能使用 Spring。虽然这两对都有很强的互补性,但是每一对的两者之间都不是相互依赖的。

对 EJB3 的考虑

正如我将要解释的那样,Seam 通过一些有价值的 hook 和组件管理进程 扩展默认 JSF 生命周期。还可以完全独立于 EJB3 使用 Seam。但是要记住,和 EJB3 一样,Seam 依赖于 JDK 5 注释元数据进行组件声明,因此使用 Seam 时,还需要同时使用兼容 Java 5 的 JVM。图 1 显示了一个 Seam POJO 实现的应用程序堆栈:

图 1. 一个 Seam POJO 应用程序堆栈

实际上,即使完全不引用 EJB 3 jar 或描述符文件,也可以使用 Seam 的很多功能。当和 POJO 一起使用 Seam 时,该框架保留对组件实例化的完全控制,并且不要求任何专门的配置。Seam 负责大多数 Java 5 注释处理,而不需要依赖于 EJB 3 中的任何机制。的确 依赖于 EJB3 容器的一组有限的注释则是专用于那个环境的。在某些情况下,将 Seam 集成到一个没有 EJB 3 耦合的 IT 投资中可以获得更好的成本效益。如何使用 Seam 视个人偏好而定。

时间: 2025-01-20 10:29:59

Seam无缝集成:为JSF定做应用程序框架的相关文章

Windows Server 2008终端服务无缝集成远程程序

终端服务允许组织通过各种Windows设备在各地访问标准Windows程序,无论是内网还是外网这种访问都是畅通无阻的.而http://www.aliyun.com/zixun/aggregation/32995.html">在Windows Server 2008的终端服务中则包含了无缝集成的远程程序.我们先介绍一下关于远程计算的的四个W,然后介绍具体的安装配置. 什么是远程程序(what) 远程程序是一种通过终端服务运行的实现远程访问的程序,这种程序看上去就好像是运行在用户的终端计算机上

Windows 8.1无缝集成新设备协议API:应用交互更流畅

在微软官方的Windows App Builder博客中,微软展示了Windows 8.1中一个"激动人心"的改进.受益于对数个创新的设备协议APIs的支持,Windows 8.1为接入大量设备带来了可能.微软表示,"其中最令人兴奋的改进是,Windows 8.1预览版放开了接入巨量设备的阀门.尽管Windows 8已支持某些如打印.传感器.地理定位等设备,但设备的访问却受限于那些专用的应用程序.而在Windows 8.1中,这一点已经显著改变". "我们

Windows 8.1无缝集成新设备协议API

  在微软官方的Windows App Builder博客中,微软展示了Windows 8.1中一个"激动人心"的改进.受益于对数个创新的设备协议APIs的支持,Windows 8.1为接入大量设备带来了可能.微软表示,"其中最令人兴奋的改进是,Windows 8.1预览版放开了接入巨量设备的阀门.尽管Windows 8已支持某些如打印.传感器.地理定位等设备,但设备的访问却受限于那些专用的应用程序.而在Windows 8.1中,这一点已经显著改变". "

《深入理解Scala》——第1章,第1.4节与JVM的无缝集成

1.4 与JVM的无缝集成 深入理解Scala Scala的吸引力之一在于它与Java和JVM的无缝集成.Scala与Java有很强的兼容性,比如说Java类可以直接映射为Scala类.这种紧密联系使Java到Scala的迁移相当简单,但在使用Scala的一些高级特性时还是需要小心的,Scala有些高级特性是Java里没有的.在Scala语言设计时已经小心地考虑了与Java无缝交互的问题,用Java写的库,大部分可以直接照搬(as-is)到Scala里. 1.4.1 Scala调用Java 从S

请问我如何让这2个web服务协同工作?无缝集成那

问题描述 订单审核web服务简称A.有独立的api和后台控制面板.他们的工作是分析买家付款真假会把订单分成可安全发货,需要人工审核再决定是否发货和危险不安全订单3类给我通常订单审核时间为30分钟最多然后我在他们的登陆页面会看到审核结果自动发邮件web服务简称B.有独立api功能和后台控制面板,收到付款指令发email,请注意实际B是一个傻瓜式软件不管订单是否安全都在付款后发送email需求是顾客付款后收到email我要把2个服务无缝集成如何实现注意这是我问题关键,1如何能让B方自动发送来自A方的

《Python面向对象编程指南》——第2章 与Python无缝集成——基本特殊方法 2.1 __repr__()和__str__()方法

第2章 与Python无缝集成--基本特殊方法 Python中有一些特殊方法,它们允许我们的类和Python更好地集成.在标准库参考(Standard Library Reference)中,它们被称为基本特殊方法,是与Python的其他特性无缝集成的基础. 例如,我们用字符串来表示一个对象的值.Object基类包含了__repr__()和__str__()的默认实现,它们提供了一个对象的字符串描述.遗憾的是,这些默认的实现不够详细.我们几乎总会想重写它们中的一个或两个.我们还会介绍__form

如何集成Perf4j到Java应用程序中并生成性能数据

在实际部署的生产环境能够以较低的风险及成本实现对业务逻辑级别性能问题的追踪.本文将介绍如何集成 Perf4j 到 Java 应用程序中并生成性能数据. 系统日志是应用程序问题诊断及运行维护的重要工具.Logback.Log4j 是常用于 Java 平台的日志记录 API. 目前大部分产品只是将系统重要参数.状态的变化及异常信息通过日志输出.本文将要介绍的 Perf4j 是一款专门用于 Java 服务器端代码计时.记录日志和监控结果的开源工具包.Perf4j 对常用日志工具包进行了扩展,能够将得到

想精准营销?神策分析无缝集成推送平台

创业者窘境:"纳不起"新客 据某第三方平台近期调研结果显示,在金融创业领域,2013年一家互联网金融创业公司的投资获客成本区间为300-500元,而2016年则涨为1000-3000元:在电商领域,新用户的获取成本,是维护一个老用户的3倍到10倍-- 如今,高居不下的获客成本让互联网.移动互联网创业者们遭遇新的"天花板",甚至陷入"纳不起"新客的窘境.而花费极高成本所获取的客户,可能仅打开一次APP.或完成一次交易,就白白流失.随着市场饱和度上升

与操作系统和办公软件无缝集成的云计算势不可挡

云计算被视为IT产业的一个工业革命.它将带来工作方式和商业模式的根本性变化.特别是http://www.aliyun.com/zixun/aggregation/33109.html">中国大陆现在正处于互联网高速发展期和融合期,云计算更是给各大厂商带来了无限的商机.各大厂商当然不会错过这个机会,纷纷采取措施来瓜分这个大蛋糕. 在国内,微软产品的客户群体绝对是独占鳌头,虽然有不少使用的是盗版的操作系统与办公软件.近几年,Linux等非微软的产品也在发展,但是由于基数比较小,仍然无法撼动微软