Flex在黄河水库调度运行信息平台中的应用

2011-08-15 00:52江,李勇,刘
科技传播 2011年1期
关键词:配置文件实例黄河

周 江,李 勇,刘 璐

黄河水利委员会信息中心,河南郑州 450004

Flex在黄河水库调度运行信息平台中的应用

周 江,李 勇,刘 璐

黄河水利委员会信息中心,河南郑州 450004

黄河水库平台信息管理系统采用了流行的Spring框架,通过Spring中的JdbcTemplate操作数据库,最后,应用通过Servlet和JSP页面为用户提供前端界面,用Flex重新编写界面会带来更好的用户体验。通过集成Flex到JAVA EE应用和开发Flex客户端的方式实现了Flex在黄河水库调度运行信息平台中的应用。

水库平台;Spring框架;Flex

1 Flex介绍

Flex是通过java或者.net等非Flash途径,解释.mxml文件组织components,并生成相应得.swf文件。

Flex技术包括以下几个主要技术框架:1)描述应用程序界面的XML语言(MXML);2)符合ECMA规范的脚本语言(ActionScript),处理用户和系统的事件,构建复杂的数据模型;

3)一个基础类库;4)运行时的即时服务;5)由MXML与ActionScript文件生成swf文件的编译器。

2 Flex的实践应用

在黄河水库调度运行信息平台中,采用了流行的Spring框架,通过Spring中的JdbcTemplate 操作数据库。最后,应用通过Servlet和JSP页面为用户提供前端界面。由于本系统的信息查询更接近于传统的桌面应用程序,因此,用Flex重新编写界面会带来更好的用户体验。

2.1 集成Flex到JAVA EE应用

将 Flex 集成至该Java EE应用需要让Flex和Java EE后端通信。针对Java EE开发的服务器端应用,可以通过集成 BlazeDS,充分利用 AMF 协议并能轻易与Flex 前端交换数据,这种方式是Java EE应用程序集成Flex的首选。

尽管现有的应用程序已经有了 Facade接口,但这个接口是暴露给 Servlet使用的,最好能再为Flex定义另一个接口FlexService,并隐藏 Java 语言的特定对象。

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

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

BlazeDS所需的所有配置文件均放在/WEB-INF/flex/目录下。BlazeDS将读取services-config.xml配置文件,该配置文件又引用了remoting-config.xml、proxy-config.xml和messaging-config.xml这3个配置文件,所以,一共需要4个配置文件。

由于BlazeDS需要将Java接口FlexService暴露给Flex前端,因此,我们在配置文件remoting-config.xml中将FlexService接口声明为一个服务。

然而,按照默认的声明,BlazeDS会去实例化FlexService对象。对于一个JavaEE应用来说,通常这些服务对象都是被容器管理的(例如,Spring容器或EJB容器),更合适的方法是查找该服务对象而非直接实例化。因此,需要修改配置告诉BlazeDS通过Factory来查找指定的FlexService对象。

由于FlexService对象已经被Spring管理,因此,我们需要编写一个FlexFactory告诉BlazeDS如何找到Spring管理的FlexService的实例。flexFactory在services-config.xml中指定。FlexFactoryImpl实现了FlexFactory接口,该接口完成两件事情:1)创建FactoryInstance对象;2)通过FactoryInstance对象查找我们需要的FlexService。

BlazeDS查找FlexService接口的过程:BlazeDS将首先创建FlexFactory的实例——FlexFactoryImpl;当接收到Flex前端的远程调用请求时,BlazeDS通过FlexFactory创建FactoryInstance对象,并传入请求的ServiceID。在这个应用程序中,被创建的FactoryInstance实际对象是SpringFactoryInstance;

FactoryInstance的lookup()方法被调用,在SpringFactoryInstance中,首先查找Spring容器,然后,通过Bean的ID查找Bean,最终,FlexService接口的实例被返回。

Property的SOURCE属性由 BlazeDS 读取XML配置文件获得。

2.2 开发Flex客户端

Flex Builder 将会把生成的 Flash 文件放到项目的 web/Skpt-Flex-debug目录下。

为了能在 Flex 中实现远程调用,我们需要定义一个RemoteObject 对象并列出其所有的方法。

使用强类型的RemoteObject接口。这个强类型的RemoteObject最好能通过JavaEE应用的FlexService接口自动生成,这样,就无需再维护RemoteObject的定义。

现在,JavaEE后端开发团队和Flex前端开发团队只需协商定义好FlexService接口,然后,利用Java2ActionScript,Flex团队就得到了强类型的FlexServiceRO类,而JavaEE团队则只需集中精力实现FlexService接口。

在开发的前期,甚至可以用硬编码的FlexService的实现类。每当FlexService变动时,只需再次运行Ant脚本,就可以获得最新的FlexServiceRO类。这样,两个团队都可以立刻开始工作,仅需要通过FlexService接口就可以完美地协同开发。

3 应用效果

在黄河下游水库调度运行信息平台中采用了Flex技术有以下的优点:

1)利用Flex提升开发效率

通过在项目中应用Flex,提升了开发团队的工作效率。也解决了项目开发前后端无法及时沟通,需要互相依赖的开发模式。使得前后端开发人员可以专注于自己的工作,提升工作质量。

2)利用Flex完善用户体验

Flex本身就是基于富互联网应用(RIA)的技术,继承了Flash在表示层上先天性的美感、除了视觉上的舒适感外,还天生具备方便的矢量图形、动画和媒体处理接口。通过在黄河水库调度运行信息平台中使用Flex,为用户提供了界面美观、交互方便的应用系统。

TV7

A

1674-6708(2011)34-0101-01

猜你喜欢
配置文件实例黄河
多彩黄河
黄河宁,天下平
『黄河』
忘记ESXi主机root密码怎么办
打印机设置
完形填空Ⅱ
完形填空Ⅰ