当前位置: 网学 > 编程文档 > JAVA > 正文

将 Flex 集成到 Java EE 应用程序的最佳实践

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/05

【编者按】网学网JAVA频道为大家收集整理了“将 Flex 集成到 Java EE 应用程序的最佳实践“提供大家参考,希望对大家有所帮助!


开发环境

本文的开发环境为 Windows 7 Ultimate,Eclipse 3.4,Flex Builder 3(从 参考资源 获得下载链接)。Java EE 服务器使用 Resin 3.2,当然,您也可以使用 Tomcat 等其他 Java EE 服务器。

现有的 Java EE 应用

假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示:

图 1. Java EE 工程结构
图 1. Java EE 工程结构

这是一个典型的 Java EE 应用,使用了流行的 Spring 框架。为了简化数据库操作,我们使用了内存数据库 HSQLDB。对这个简单的应用,省略了 DAO,直接在 Façade 中通过 Spring 的 JdbcTemplate 操作数据库。最后,EmployeeMgmt 应用通过 Servlet 和 JSP 页面为用户提供前端界面:

图 2. EmployeeMgmt Web 界面
图 2. EmployeeMgmt Web 界面

该界面为传统的 HTML 页面,用户每次点击某个链接都需要刷新页面。由于 Employee Management 系统更接近于传统的桌面应用程序,因此,用 Flex 重新编写界面会带来更好的用户体验。

集成 BlazeDS

如何将 Flex 集成至该 Java EE 应用呢?现在,我们希望用 Flex 替换掉原有的 Servlet 和 JSP 页面,就需要让 Flex 和 Java EE 后端通信。Flex 支持多种远程调用方式,包括 HTTP,Web Services 和 AMF。不过,针对 Java EE 开发的服务器端应用,可以通过集成 BlazeDS,充分利用 AMF 协议并能轻易与 Flex 前端交换数据,这种方式是 Java EE 应用程序集成 Flex 的首选。

BlazeDS 是 Adobe LifeCycle Data Services 的开源版本,遵循 LGPL v3 授权,可以免费使用。BlazeDS 为 Flex 提供了基于 AMF 二进制协议的远程调用支持,其作用相当于 Java 的 RMI。有了 BlazeDS,通过简单的配置,一个 Java 接口就可以作为服务暴露给 Flex,供其远程调用。

尽管现有的 EmployeeMgmt 应用程序已经有了 Façade 接口,但这个接口是暴露给 Servlet 使用的,最好能再为 Flex 定义另一个接口 FlexService,并隐藏 Java 语言的特定对象(如 清单 1 所示):

清单 1. FlexService interface
 public interface FlexService {     Employee createEmployee(String name, String title, boolean gender, Date birth);     void deleteEmployee(String id);     Employee[] queryByName(String name);     Employee[] queryAll(); } 

现在,Java EE 后端与 Flex 前端的接口已经定义好了,要完成 Java EE 后端的接口实现类非常容易,利用 Spring 强大的依赖注入功能,可以通过几行简单的代码完成:

清单 2. FlexServiceImpl class
 public class FlexServiceImpl implements FlexService {     private static final Employee[] EMPTY_EMPLOYEE_ARRAY = new Employee[0];     private Facade facade;     public void setFacade(Facade facade) {         this.facade = facade;     }     public Employee createEmployee(String name, String title, boolean gender,         Date birth) {         return facade.createEmployee(name, title, gender, birth);     }     public void deleteEmployee(String id) {         facade.deleteEmployee(id);     }     public Employee[] queryAll() {         return facade.queryAll().toArray(EMPTY_EMPLOYEE_ARRAY);     }     public Employee[] queryByName(String name) {         return facade.queryByName(name).toArray(EMPTY_EMPLOYEE_ARRAY);     } } 

然后,我们将 BlazeDS 所需的 jar 包放至 /WEB-INF/lib/。BlazeDS 需要如下的 jar:

清单 3. BlazeDS 依赖的 Jar
 backport-util-concurrent.jar commons-httpclient.jar commons-logging.jar flex-messaging-common.jar flex-messaging-core.jar flex-messaging-proxy.jar flex-messaging-remoting.jar 

  • 上一篇资讯: Java与Flex通信
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号