FLEX+Java开发

上传人:206****923 文档编号:41775449 上传时间:2018-05-31 格式:DOC 页数:23 大小:1.23MB
返回 下载 相关 举报
FLEX+Java开发_第1页
第1页 / 共23页
FLEX+Java开发_第2页
第2页 / 共23页
FLEX+Java开发_第3页
第3页 / 共23页
FLEX+Java开发_第4页
第4页 / 共23页
FLEX+Java开发_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《FLEX+Java开发》由会员分享,可在线阅读,更多相关《FLEX+Java开发(23页珍藏版)》请在金锄头文库上搜索。

1、Flex + BlazeDS + Spring 整合心得整合心得 博客分类:博客分类:FlexFlexSpringEclipseAIR 应用服务器一引言一引言在用过了一年多的 AJAX 之后,忽然有一天接触到了 Flex,几乎就是一瞬间,我就被它完全吸引。出色的设计理念、方便的调试及调优、完整而详细的API、友好而个性的界面、平台无关性,并且,会促使企业在服务端采用SOA 等等,相比于现在流行的 RIA 如 AJAX,我相信它比后者更能得到开发人员、项目经理、以及最终客户的青睐。相比于 AJAX,我认为它至少有以下几点吸引我:1)调试 在最近一年带新人学习的过程中我发现,大家学习服务器端的 j

2、ava 及各种框架相对容易,反而是学习客户端的 AJAX 会比较困难,因为他们被迫要学习 Html、jsp/servlet 原理、struts 标签、OGNL 表达式、EL 表达式、Java script 、prototype、dojo、dwr 等等,最痛苦的是,即便 firefox 的firedebug 可以提供调试功能,但是,由于很少有项目是独立界面,所以,这个调试功能至今我们也没有用起来。如果发生了一个简单的 JS 错误,新手们往往会浪费一个上午的时间去解决。Flex 是基于 MXML 与 Action script 3,后者是强类型语言,在 Flex Builder 3下开发,借助编译

3、器可以在开发时发现编译异常,在运行时可以通过设置断点来分步调试,而 MXML 的底层实际上也是 Action script 3,这无论从开发、设计还是调试方面都比传统的 HTML+Java script 要强大的多。2)调优有多少 AJAX 开发人员会在编写他们的代码时关注内存占用情况?当客户端变得很慢、内存泄露、甚至溢出时,我们往往只是对客户一笑,告诉他重启浏览器。由于不好的开发习惯,很多项目代码中充斥着垃圾回收机制无法回收的内存占用,这些内存浪费就是所谓的内存泄露,更可怕的是,当你的程序运行时间越长,会累积越来越多的内存泄露,最终导致内存溢出,系统崩溃。Flex 的 profile 可以轻

4、松帮助我们发现内存溢出的根源,帮助我们写出功能性能俱佳的代码。3)CS 与 BS 部署方便传统的 J2EE 是基于 BS 架构,J2SE 是 CS 架构,很难想象将一个 J2EE 应用很轻松的转变成一个 J2SE 应用。Flex 的代码对于部署到 web application 以及 AIR 上的代码差别不大,当然IE 对于访问本地资源会有安全限制,这是无法避免的。在 AIR 上 Adobe 甚至还提供了一个内置数据库。其实 SUN 的 Applet 技术和 Flex 的这种设计理念很像,但现在我宁可用Delphi 去做一个 CS 系统,也不愿意用 JAVA Swing,我想很多人都会同意这点

5、。4)摒弃传统的 J2EE 架构传统的 J2EE 架构基于 JSP/Servlet,而这种技术是基于 HTML 标准的,HTML 标准最大的问题就是请求/响应机制,这种机制带来的最大问题就是无法满足用户实时性的要求,我们能做的,也只是定时刷新,就像开心网上有了新消息后的提示,就是通过定时(好像是1S)刷新的方式来实现,但对于更大数据量,则无法采用服务器“推”技术。Flex 技术的传输协议支持 HTML、SOAP、AMF(BlazeDS 就是采用这种方式)通信,其中 SOAP 我印象中在 SOAP1.2中就可以支持四种客户端/服务器的响应方式,非常灵活。采用 Flex,可以使你的客户端与服务器不

6、用局限于传统的 HTML 约束。5)客户端与服务器完全独立传统的 J2EE 技术通常要求客户端与服务器同时采用 JAVA 技术,除非采用像 Web Service 这种技术,才可以实现客户端与服务器采用不同技术实现。Flex 就是实现客户端应用,它并不关心你的服务器应用是什么技术来实现,这就与传统的 SOA 理念很合拍,而我一直认为,SOA 理念是企业平台最理想的实现准则。6)丰富的框架与传统的 Java script 库不同,目前的 Flex 框架会提供一套方法学来统一处理开发协作问题,使你的项目风险降到最低,代码的兼容性也会更好。比如Adobe 官方的 Cairngrom,就是基于客户端

7、MVC 架构的一套 Flex 框架,大小只有500多 K,当然还有技术无关性的PureMVC、Fondry、ARP、Guasax Flex Framework 等等。最重要的是,与一本500多页的Struts2 权威指南不同,Cairngrom 的官方文档只有30来页。当然,Flex 带给我的冲击还不仅仅上述这些,它最大的优势我觉得是它的设计理念,相信在你接触到它以后,会和我一样被它吸引。这篇文章试图通过一个 Hello World 的例子来展示如何将 Flex,BlazeDS 以及 Spring 进行整合,本文不会讨论上述技术的具体细节。之所以决定写这篇文章,是因为虽然网上关于这方面的文章比

8、较多,但在过程中还是有不少小陷阱,这篇文章会带领读者从容进行搭建。二环境搭建二环境搭建Flex :Flex Builder 3BlazeDS : http:/ 版本Spring : spring2.55服务器端开发 IDE 我选用的是 Eclipse3.3三服务器搭建三服务器搭建1 在 Eclipse 中新建一个动态 web 项目2 下一步这里运行时 J2EE 容器采用 Tomcat6.020(这里需要先配 Eclipse 的动态 server,如下图) ,BlazeDS 的 Turnkey 版本会自带一个 Tomcat6.010,我没有采用这个,但如果你用的是教6.010的版本更低的版本,我

9、不确定会不会有问题。3 如果你没有别的需求,可以 finish4 接下来,我们需要导入如下 jar 包:其中,以 flex 为前缀的五个 jar 包可以从blazeds-turnkey-3.2.0.3978resourceslib 中找到,除此之外,junit 的两个包是可选的,log4j 也是可选的,spring-mock 以及 spring-modules也是可选的,剩下的,spring2-5-5是 spring 的 jar 包,其它的 jar 包,都在blazeds-turnkey-3.2.0.3978blazeds.war 中5 写个 service6 将 blazeds.warWEB

10、-INFflex 中的四个配置文件放到工程 WEB-INFflex 中7 在 remoting-config 中配上刚刚写的 service像这样配置,类似于 RMI 的方式,直接将具体的 service 暴露给客户端,没有经过 spring托管,显然不是我们的预期。按照我们的预期,我们的 service 应该由 spring bean factory进行管理,然后在客户端调用时动态进行实例化。所以,这里,我们不按照上述做法配置,改成下面的方式:8 在 services-config 中配置 factory9 编写 factory,FlexFactoryImpl 实现了 FlexFactory

11、 接口,该接口完成两件事情: 创建 FactoryInstance 对象;通过 FactoryInstance 对象查找我们需要的 FlexService。因此,需要一个 FactoryInstance 的实现类,我们编写一个 SpringFactoryInstance,以便从 Spring 的容器中查找 FlexService:FlexFactoryImpl 负责实例化 SpringFactoryInstance 并通过 SpringFactoryInstance 的 lookup() 方法查找 FlexService 接口对象:10 web.xml:由于我们在 factory 中需要 We

12、bApplicationContext,所以,需要配 spring 的监听ContextLoaderListener,后面的配置是处理 flex 客户端发送过来的请求,进入 BlazeDS 的MessageBrokerServlet.server 端的项目目录如下:WebContent/BlazeDSDemo-debug 这是后面 Flex 客户端自动生成的用来放置 flex 部署文件的地方,暂时不去管它。四客户端搭建:四客户端搭建:1 在 Flex Builder 3中创建 Flex Project2 这里我们采用 Web application,理论上通过 AIR 方式也不应该有问题服务器

13、选择 J2EE,通过选中 LiveCycle Data Services,那么 LiveCycle Data Services 是什么呢,其实,BlazeDS 是 Adobe LiveCycle Data Services 的开源版本,如下图:3 下一步Root folder:tomcat 的 webapp,必须保证这个路径下有 WEB-INF/flex,我这里配置的是eclipse 动态 server 时运行的 tomcat webapp,这样,比较方便开发调试。当然,在部署时,这里的地址应填实际 tomcat 的 webappRoot url : 这是你项目的根路径Content root

14、 : 这是上面去掉 http:/localhost:端口号的部分记住,在 eclipse 中启动动态 tomcat,然后点击 Validate configuration,如果配置成功,就会出现“the web root folder and root URL are valid”,这里必须保证配置成功,才能点击下一步。Output folder: 我在这里也是填入动态 tomcat 的位置,这个地址应该是 root folderflex 项目名-debug,flex builder 会把编译后的文件放到这个目录下,最后通过 eclipse 统一部署。4 如果没有其它详细配置,点击 finis

15、h.5 程序入口 BlazeDSDemo.mxml:6 如果这时程序报 server SDK 不正确的错误,需要到工程的 properties 中配置 SDK 的编译器五验证五验证单击按钮,eclipse console 中出现 hello world,大功告成,先简单说一下 Blazeds,简单的讲 Blazeds 就是 flex 与 java 平台进行交互的工具,当然不仅限于 java 语言,也包括运行在 java 平台上的其他语言,关于这方面可以 google 下。其实 BlazeDS 可以看成是 LCDS 的一个子集,而且是一个开源产品,在一般的项目中完全可以替代 LCDS,现在有三个

16、版本,其中 Turnkey 版内置了 Tomcat 和 Flex 3 SDK,还包含blazeds.war、ds-console.war 和 samples.war;Binary Distribution 版只包括blazeds.war,此为最简配置;而 Source 则包含 blazeds 的 Java 源代码,如果想做二次开发就下载这个。下图是 Adobe 官方的 Blazeds 与 LCDS 的对比,现在知道什么地方该用哪个了吧好了不多说了,看看如何配置:目前来说有三种方式:第一种:flex 工程与 java 工程相互独立;第二种:Flex 工程整合 Java 项目;第三种:java 项目中加入 flex;其中第一种和第三种在配置上很相似。简单说一下:第一种:1、当然是先建一个 java 工程,把需要的包导入,配置文件写好,web.xml 参考 Blazeds 的例子,导入 Tomcat 就

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号