??xml version="1.0" encoding="utf-8" standalone="yes"?>
作者简?/strong>: Shashank TiwariQ又名ShankyQ,Saven Technologies的首席架构师。有多年从事高性能应用E序设计和开发的l验。近q来Q主要关注面向服务架构。他定期地在许多U技期刊上发表文章,q且总开发者导师和架构师的w䆾出席研讨会。他同时也是开源Y件的热心支持者。现和他的妻子以及两个儿子居住在国U约?/p>
摘要: 本文分析了JBoss Seam有望取代Struts成ؓJava Web应用框架”下一个王?#8221;的原因,q且指出了Spring和Google Web工具包的不?/p>
时至今日QApache Struts仍旧是最受欢q的Java Web应用框架。然而,对于新的应用开发,它显得有些过Ӟq且存在很多不?/p>
目前已经出现了几个有望取代Struts的框Ӟ但是q没有最l的胜利者。你认ؓ谁会当之无愧地成为领D呢Q如果你是一个Java Web应用E序的开发者,你会选择哪种框架呢? 目前已经有了很多受欢q的Web UI技术,包括富界面、AJAX、RIA和其他一些相似的技术?/p>
然而,在服务器端仍然只有Java——Java中有许多ZJSP和Servlets的、流行的服务器端技术。许多时候,q些服务器端技术需要和客户端的富界面技术一起用?/p>
举例来说Q许多开发h员将AJAX与新生代的Java Web框架JSF合ƈh一起用;q有些开发h员通过Javaq程调用库、开源或者商业代码来调用JavaScript和ActionScriptQ用于远E访问服务器端?/p>
q是否意味着Q我们需要应用一个像Apache
Shale那样Q可以很好地和JSF工作的框架呢Q这是否意味着Q我们只需要根据Web应用中的Java部分Q只使用q程讉K包和Servlets呢??
者意味着Q我们应该用一个包含两者的框架Q例如,JBoss SeamQ?/p>
在回{这些问题之前,让我们先x一下另外一个问题:了解SunI竟在说什么?/p>
不幸的是Q在q点上,Sun没有明确的信息。它有三U战略,q且在同一旉Q它说出了全部这三种。它们是Q?/p>
1. JSF——基于规范的服务器端lgQ用于加强早期的Servlets和JSF模型?/p>
2. Swing——用于Web的、以虚拟Zؓ基础的解x案。在”富界面时?#8221;Q应该有q样一个领D,毕竟它诞生于10q前。但是,不幸的是Q它落伍了。Swing应用框架被誉使Swing复活?#8221;救世?#8221;。但是,我不认ؓq能”破冰”?/p>
3.
JavaFX——目前主要是在新M会提到它Q而实际应用还是很。富Web应用框架包含手机、网站和M其他接口Q这是{案所在。而只有时间才能告?
什么会变成它。我的观ҎQ在做更多事情之前,Sun已经使开发者们兴奋h。所以,在开发者们感到失望q且dq个阵营之前Q它实际上可能是一个奇妙的
选择?/p>
现在Q我们有了这些信息,但是我对Sun的方向却产生了困惑,我们应该选择哪种作ؓWeb应用技术呢Q?/p>
我的观点是,Swing会|下阵来(或许Swing技术是伟大的,但是要改变这一印象Q还有大量的工作需要做)QJavaFX在当前阶D只是一个承诺,在很长时间内Q它的真正特性不会变得明朗v来; 因此Q唯一可行的选择是JSF。当ӞJSF自n有一pd的问题。但是,像Seamq样的框架和包含ICEfacesq样的AJAXlgQ将会是一个好的选择?/p>
此外Q用Seamq样的框Ӟ你不需要依赖于JSFQƈ且你甚至可以使用它来q程讉KJava服务器端的纯JavaScriptQ例如,Dojo
工具包)或者Adobe Flex应用。JSF 2.0和JavaServlets 3.0也即推出,两者的推出会对之前的版本有大大的改进?/p>
在我们结束讨论,q且有点們于用Seam作ؓ选择的框架之前,q有两个选择值得考虑——Spring和Google Web工具包?/p>
如果你已l在服务器端使用了SpringQ将会发现Spring是一个伟大的选择Q项目组里的每个人都知道Spring很棒Q?/p>
然而,Spring在很多方面,偏离了Java EE标准Q但是我紧跟标准?/p>
有趣的是QSeam可以和Spring工作在一Pq且Spring beans可以被用作Seamlg?/p>
Google Web工具包是一个充满想象力的工P它通过把Java代码转换成JavaScript来抚慰Java开发者们。我认ؓ它像”技术摇滚明?#8221;一样吸引了许多开发h员的x。目前,它也在被大量采用?/p>
然而,它不是一个完整的Web框架?/p>
有趣的是Q它也可以和Seam工作在一赗所以,我不认ؓ今天q有什么能够好qSeamQ! JBoss Seam或许不是100%的答案,也或许还没有辑ֈApache Struts所辑ֈ的别。但是,它已l在领跑了,q且毫无疑问的是Q它l领跑,除非有新的选择出现?/p>
审校QRichard 原创文章如{载,h明:转蝲?a >JBoss Seam中文?/a>
[ http://www.jbossseam.com/ ]
本文链接地址Q?a >http://www.jbossseam.com/2007/11/14/seam-replace-struts/
]]>
摘要: 本文从多角度、较全面地ȝ了Seam的优ѝ?/p>
在功能上QAjax改变了Web的交互模型。传lWeb客户端所使用的同步、粗_度的请求,引发了很多服务器端应用吃掉少量的~存Qƈ且没有带来缓存别的q发操作?/p>
许多情况下,”无状?#8221;的架构只是基本的解决ҎQ却q远不够QAjax客户端通过很多异步、ƈ行、细_度的请求和服务器连接,使开发h员可以轻易地q接和获取远?#8221;数据?#8221;信息?/p>
可是如果状态在交互时被保存到内存,q行相关的bugs会非常危险Q因为Java EEq_q不处理会话U别的ƈ发?/p>
最初设计的时候,Seam被构x在Ajax基础上,整合q行模型和状态管理模型?/p>
Seam1.1整合了许多基于JSF的开源Ajax解决ҎQ像ICEfaces和Ajax4JSFQ同时加入了Seam的状态和q行理引擎。开 发h员可以轻村֜在程序中应用AjaxQ甚至不需要学习JavaScriptQƈ且将q离单独使用Ajax时潜在的bugs和性能问题?/p>
EJB 3.0是成熟的事务lg模型Q也是最新JPAQJava持久层APIQ关注的技术,但支持EJB 3.0的Java Web应用框架却很。这P你需要去写自q整合代码。但在大多数情况下,开发h员整合的方式q不能充分利用EJB 3.0的优ѝ?/p>
EJB 3.0是Seam使用的核心技术,你可以无处不在地使用整合的EJB 3.0lg模型。因为在Seam应用中,每个c都是一个EJBlg。你甚至不用写Q何整合代码,卛_”化”你的框架?/p>
当然Q你也可以选择不用EJB 3.0QJBoss Seam使你”g熊掌可兼?#8221;?/p>
JSF已经有许多组件库和插件以供用,也当之无愧地成ؓJava界最有吸引力的Web开发框架。但是JSFq度C赖于XML配置Qƈ且创Z富网늕面的Ҏƈ不多?/p>
Seam用注解的方式代替J琐的XML配置Q减代码量的同时也提高了开发效率?/p>
Seam在很多方面扩展了JSF的功能:包括多窗口操作、工作空间管理、基于模型的验证、基于jBPM的页面流、国际化和页面分D늼存等{?/p>
Seam甚至q加入了控制标签化页面的机制?/p>
JSF没有涉及讉K事务资源QSeam考虑Cq一点,JTA、JPA和EJB 3.0与JSF无缝地整合v来?/p>
jBPM是用于解军_在复杂h员协作或者复杂用户交互的Web应用E序的解x案?/p>
BPM技术不仅方便开发h员和分析人员建模、应用以及优化业务过E,而且可以在整个操作和理q程中评C务流E的效率和发掘业务流E中会出现的问题?/p>
Seam深度整合了jBPMQ用jBPMq行d理和页面流理变得异常简单?/p>
Seam和jBPM的结合将使一些项目的开发时间减一个月左右?/p>
Seam也同样处理复杂企业应用中的棘手问题:增删Ҏ。但qƈ不意味着解决的方式会很难上手?/p>
在创建数据驱动的应用中,Seam整合现有易用的数据层框Ӟ包括JPA、Hibernate{,使开发h员可以通过一些数据库反向工程工具和命令行工具高效地开发数据库应用?/p>
Seam来源于HibernateCQ由Hibernate创始者Gavin King设计和开发?/p>
Seam会话模型解决了传l无状态的Web应用架构D的持久层相关问题。无Z是用Hibernateq是JPAQSeam使用扩展的持久化上下文都开发变成简单,同时也可以开发h员避免在集成环境下用持久化上下文时不必要的状态重复?/p>
Seam是第一个从始至l、从持久层到表示层,都用Java 5注释功能的程序模型?/p>
你将不会再因为繁琐的XML配置而感到迷失方向。同时在Seam中,开发h员也可以使用XMLQSeam提供成熟的基于XML的组仉|机Ӟ使开发h员不会再在XML配置里迷失?/p>
M目都需要自动单元测试,但是仅仅依靠单元试是十分危险的。许多的bugs出现在组件之间或者组件和容器的交互过E中。单元测试无法捕捉容器的行ؓQ也无法捕捉lg间的交互?/p>
Seam引入了一U新方式Q?#8221;自动化集成测?#8221;。你可以模拟每个h或者会话的全部业务,来测试应用中从持久层到表C层的所有Java代码?/p>
Seam建立在实现开放标准的、像JSF?EJB 3.0q样的开源项目基上,q且整合了其他优U的开源项目,如Hibernate、jBPM、Facelets、Drools{等?/p>
Seam的缔造者们都是EJB、JPA、Bean验证和JSF{领域的专家l成员,q且领导q制定Web Beans规范QJSR-299Q的专家l?#8211;用于Seam里的一些想法带入Java EE标准中?/p>
Seam目是完全徏立在”致力于Javaq_的创新和提高”的开源项目理念上的开源框架?/p>
只要你试用它Q就会爱上它Q?/p>
审校Q骆?/p>
原创文章如{载,h明:转蝲?a >JBoss Seam中文?/a>
[ http://www.jbossseam.com/ ]
本文链接地址Q?a >http://www.jbossseam.com/2007/11/10/ten-good-reasons-to-use-seam/
作?/strong>: 路易十三
摘要: 本文介绍了如何在JBoss AS下部|SeamCZE序?/p>
本文使用的JBoss AS版本?.2.2.GA QJBoss Seam版本?.0.0.GA?/p>
L保您安装了JDK 5.0Q或以上版本Q以及Ant 1.6Q或以上版本Q?/p>
让我们开始吧Q?/p>
讉Khttp://labs.jboss.com/jbossas/downloads/Q下载JBoss AS 4.2.2.GA?br />
Q图1Q?/p>
下蝲完毕Q将jboss-4.2.2.GA.zip解压。以解压到D:\Java\jboss-4.2.2.GAZQ?/p>
q入D:\Java\jboss-4.2.2.GA\bin目录Q运行run.batQ运行结果大致如下:
Q图2Q?/p>
Z验证安装的有效性,误?a href="http://localhost:8080/" target="_blank" title="http://localhost:8080/">http://localhost:8080/。如果安装成功,会出C下画面:
Q图3Q?/p>
注意QSeam 2.0版本需要JBoss 4.2Q或以上版本Q的支持?/p>
讉Khttp://labs.jboss.com/jbossseam/download/index.htmlQ下载JBoss Seam 2.0.0.GA?br />
Q图4Q?/p>
下蝲完毕Q将jboss-seam-2.0.0.GA.zip解压。以解压到D:\Java\jboss-seam-2.0.0.GAZQ?/p>
修改D:\Java\jboss-seam-2.0.0.GA下的build.properties文gQ添加一行:
jboss.home D:\\Java\\jboss-4.2.2.GA
其中QD:\\Java\\jboss-4.2.2.GA为JBoss AS 4.2.2.GA的安装目录?/p>
q入D:\Java\jboss-seam-2.0.0.GA\examples\bookingQ运行:ant deploy?/p>
其中D:\Java\jboss-seam-2.0.0.GA为JBoss Seam 2.0.0.GA的安装目录?/p>
如果部v成功Q会出现以下画面Q?br />
Q图5Q?/p>
讉Khttp://localhost:8080/seam-bookingQ运行结果如下:
Q图6Q?/p>
恭喜您,您成功地在JBoss AS上部|了SeamE序?/p>
审校QRichard
原创文章如{载,h明:转蝲?a title="http://www.jbossseam.com/">JBoss Seam中文?/a>
[ http://www.jbossseam.com/ ]
本文链接地址Q?a title="http://www.jbossseam.com/2007/11/07/deploy-seam-application-in-jbossas/">http://www.jbossseam.com/2007/11/07/deploy-seam-application-in-jbossas/