将Flex集成到JavaEE应用程序的最佳实践传统的JavaEE应用程序通常使用某种MVC框架(例如,Struts)作为前端用户界面,随着Flex的兴起,基于RIA的客户端能够给用户带来更酷的界面,更短的响应时间,以及更接近于桌面应用程序的体验。本文将讲述如何将Flex集成至一个现有的JavaEE应用程序中,以及如何应用最佳实践高效率地并行开发 JavaEE和 Flex。开发环境本文的开发环境为Windows7Ultimate,Eclipse3.4,FlexBuilder3(从 参考资源 获得下载链接)。JavaEE服务器使用Resin3.2,当然,您也可以使用Tomcat等其他JavaEE服务器。现有的JavaEE应用假 定 我 们 已 经 拥 有 了 一 个 管 理 雇 员 信 息 的JavaEE 应用,名 为EmployeeMgmt-Server,结构如图 1所示:图 1.JavaEE工程结构这是一个典型的JavaEE应用,使用了流行的Spring框架。为了简化数据库操作,我们使用了内存数据库 HSQLDB。对这个简单的应用,省略了DAO,直接在 Façade中通过 Spring的JdbcTemplate操作数据库。最后,EmployeeMgmt应用通过 Servlet和 JSP页面为用户提供前端界面:图 2.EmployeeMgmtWeb界面该界面为传统的HTML页面,用户每次点击某个链接都需要刷新页面。由于 EmployeeManagement系统更接近于传统的桌面应用程序,因此,用Flex重新编写界面会带来更好的用户体验。集成 BlazeDS如何将 Flex集成至该JavaEE应用呢?现在,我们希望用Flex替换掉原有的Servlet和 JSP页面,就需要让 Flex和 JavaEE后端通信。Flex支持多种远程调用方式,包括 HTTP,WebServices和 AMF。不过,针对 JavaEE开发的服务器端应用,可以通过集成 BlazeDS,充分利用AMF协议并能轻易与 Flex前端交换数据,这种方式是 JavaEE应用程序集成 Flex的首选。BlazeDS是 AdobeLifeCycleDataServices的开源版本,遵循 LGPLv3授权,可以免费使用。BlazeDS为Flex提供了基于 AMF二进制协议的远程调用支持,其作用相当于 Java的RMI。有了 BlazeDS,通过简单的配置,一个Java接口就可以作为服务暴露给 Flex,供其远程调用。尽管现有的EmployeeMgmt应用程序已经有了 Façade接口,但这个接口是暴露给Servlet使用的,最好能再为Flex定义另一个接口 FlexService,并隐藏 Java语言的特定对象(如 清单 1所示):清单 1.FlexServiceinterfacepublicinterfaceFlexService{EmployeecreateEmployee(Stringname,Stringtitle,booleangender,Datebirth);voiddeleteEmployee...