JSF在GlassFish管理掌握台中的操纵[Java编程]
本文“JSF在GlassFish管理掌握台中的操纵[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
相比于Tomcat,GlassFish的用户群还没有那么遍及,但是因为其一样免费、开源,并且拥有如耽误加载、 Grizzly等技术,正获得越来越多人的承认.而JSF作为一个Web开辟的尺度,固然自诞生之日起就一向饱受争议,不过在争议中,它也在博得更多开辟者的目光.Anissa是GlassFish的一个主要提交者,带领其管理掌握台项目,在Sun的利用服务器团队工作了7年之久.InfoQ中文站的编辑霍泰稳有幸就JSF在GlassFish管理掌握台中的利用,如为安在GlassFish管理掌握台中利用JSF模板,若何对JSF做单元测试,JSF的组件库以及若何提高JSF的性能等问题采访了Anissa.
InfoQ中文站:请介绍一下您自己以及目前所主要研究的技术范畴.
Anissa:我是GlassFish的主要提交者,目前带领其管理掌握台项目.大约七年前,我加入了利用服务器团队,当时GlassFish还没有开源.我参与过很多GUI工具,包含J2EE 1.4参考实现中的deploytool以及我们深受欢送的IDE_NetBeans的插件,而目前是负责管理掌握台.在这些年里,我见证了Web利用开辟技术的发展历程,并从中受益很多.我目前专注于Web 2.0,努力于将最新的技术利用到GlassFish管理掌握台.
InfoQ中文站:GlassFish的管理掌握台用到了JSF模板,请介绍一下选用这个技术的缘由.
Anissa:JSF是一个面向组件的框架.因此,它易于组织各种具有复杂功效的“组件”成为一个网页,这些组件包含文件挑选、文件上传、表格、BreadCrumb、属性表以及别的很多组件.但是,JSF 1.2 没有供应一种简便的方法重用GUI显示逻辑大概通过模板组织页面. JSFTemplating通过调和模板让定义页面变得更有效率.它也增添了很多旨在鼓舞代码复用的特点和其他有效的功效.这些功效包含:一个细粒度的事件模子、可以参数化的可重用“处理函数”、支持注释、页面作用域、可以将任何内容根源转化为资源流、可定制的组件工厂.这些功效和JSF丰富的组件模子结合,为成立GlassFish管理掌握台供应了丰富的开辟环境.
InfoQ中文站:JSF的一个初衷就是快速开辟,但单元测试对快速开辟一样重要.您若何做JSF的单元测试?
Anissa:我不得不承认管理掌握台的单元测试是最具缺陷的地方之一,亟需提高.关于GlassFish V2,我们已经研究并利用Selenium做了一些测试,固然Selenium更合适功效测试.我们也依靠质量保证部门对掌握台举行自动化测试.关于 GlassFish V3,我们正在研究差别的框架,比方JSFUnit,它可以作为Maven构建历程和Hudson的一部份.
InfoQ中文站:目前关于JSF的错误提醒仿佛还不那么直观,过于底层,关于若何定位错误您有什么本领?
Anissa:JSF错误信息从1.0开始一向在持续改良.不幸的是,很多时刻人们面对错误信息,仍旧需求具有充足的JSF是若何工作的知识才能完好理解.找出错误的本源常常需求经验.但是,这里有一些本领可以帮忙你:
查看JSF源代码.JSF是开源的,不要惊骇去获得源代码,看一看错误发生位置处的代码.
报告糟糕的错误信息.当你无法理解错误信息的意思时,请去https://javaserverfaces.dev.java.net,提交一个“问题”,这会有助于改良错误信息并且你也很有大概得到你所碰到的问题的答案.
利用谷歌,在论坛上发问.有很多人在利用JSF,大概有人已经碰到并提出了这个问题.假如没有,你会发现很多人乐于帮忙你、解答你的问题.
确认你利用了JSF “h:messages”组件(大概别的一个显示这些内容的组件).JSF常常利用“Faces消息”机制报告错误,假如你没有在页面上包含“h:messages” 组件,你就无法看到这些错误.
利用这些本领,你可以办理碰到的任何问题.
InfoQ中文站:JSF用来做重业务,轻页面的企业开辟回对比符合,但目前客户也都对比器重页面,对界面计划也提出了很高的要求.通过IDE,JSF可以实现可视化编辑Web界面,但若何高效的实现开辟人员和网页开辟人员的合作?您在开辟JSF时是若何跟美工配合的?
Anissa:我们的产品对界面计划感观有一个十清楚确的尺度.我们利用的组件(Woodstock)默许情形下就反映了这种计划要求.因此,JSF面向组件的本质供应应我们很多外观和感受方面的挑选,而不需求太多开辟工作.也就是说,我们的产品中有一些地方需求定制图片、决意若何显示信息,也存在一些地方没有被JSF Woodstock组件覆盖.针对这些情形,我们与美工合作成立图片,大概他们帮忙我们决意哪些组件最符合,大概对新组件拟定尺度.假如需求新组件,我们常常让Woodstock团队负责这项工作--当我们不能等候时,我们才会自己实现.美工普通供应图片和HTML,我们将其转化成JSF页面大概组件.
InfoQ中文站:管理掌握台是若何利用AJAX技术的?
Anissa:在GlassFish V2中,我们在大大都页面上利用Ajax计算BreadCrumb.浏览器中的JavaScript计算当前哪一个树节点被选中,然后从树节点中获得 URL,将这些信息通过XMLHttpRequest发送给服务器.服务器将这些信息转化成由多个Woodstock超链接构成的BreadCrumb组件.显示该组件的代码返回到浏览器后,JavaScript将BreadCrumb信息更新到当前页面上.
当新对象成立时,我们也利用Ajax更新树节点.整棵树从不会被完好革新,它只会通过Ajax举行部份更新.我们利用Dynamic Faces实现Ajax技术,它是Ed Burns(JSF尺度负责人)带领的JSF扩大项目的一部份.
InfoQ中文站:JSF一个重要的上风是基于组件,管理掌握台有没有开辟自己的组件库,关于组件库的挑选利用有何倡议?管理掌握台中的表单是若何举行扩大的?
Anissa:正如在答复第4个问题时所提到的,我们利用Woodstock组件开辟掌握台.Woodstock 供应了一整套JSF组件,让开辟人员基于统一的标准成立便利的本地化的利用.我们还没有碰到需求自己开辟组件的情形.假如你有这个设法,你可以看一看 Ken Paulsen写的有关ServerSide的文章,他是JSFTemplating的技术负责人和成立者.他在文中展示了若何利用 JSFTemplating简化和加快显示(Render)开辟.
我们的很多页面利用表单显示数据,这也是Woodstock的组件之一.
InfoQ中文站:在利用JSF的历程中,你们主要碰到了哪些棘手的难题,又是若何降服的?
Anissa:Bug.当组件正常工作的时刻它们很超卓,但是当你处理一个无法工作的新组件时,很难找到缘由.幸运的是,这种情形不会常常发生,因为组件被很多人、很多程序重用,因此bug会及时发现.但是,假如这发生了,我们会与组件作者交流、在论坛大概irc频道发问、搜索谷歌中其他人碰到的近似问题,问题终究得到办理.
InfoQ中文站:JSF通过和Session绑定实现数据显示,固然简单了,但是掌握数据同时也艰难了.关于这种情形,您是若何理解的?
Anissa:管理掌握台尽大概避免利用session作用域.频繁利用session大概会招致内存的大量占用,大概之前的行动遗留下来的一些信息会招致产生bug.管理掌握台尽大概多的利用request,还有pageSession,它答应伴随着页面存储值,只要你处于同一个页面,其值就一向存在,但不会超越页面的生存时间.我们的确碰到过一些情形,数据必须跨页面存在,我们要末在页面之间传送数据,要末在极少的个案中利用session.
InfoQ中文站:在晋升JSF利用的性能方面,您有什么倡议?
Anissa:JSF供应了大量功效.但是,功效只有在需求时才是有代价的.能否应当利用JSF的更多功效取决于你利用程序的需求.假如你想对功效进一步理解以肯定它们能否对你的利用有帮忙,我举荐你阅读一本好书以及在JSF论坛上发问.你大概也会考虑加入 irc.freenode.net上的jsf IRC频道.这是一个聆听其他人发问和从专家获得答案的好地方.假如正在利用JSFTemplating大概只是想多理解一下,#jsftemplating也是一个不错的去处.
注:感激Sun中国研究院蒋健,InfoQ中文站Java社区编辑沙晓兰供应智慧支持!本文彩访文稿为英文,由崔康翻译,张凯峰审校.
以上是“JSF在GlassFish管理掌握台中的操纵[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |