好久没更新文章了,问题多多的2008就要过去了,希望来年是个好兆头,大家都平平安安…
其实很早就接触过Flex BlazeDS Java结合使用,最初还用的是FDS(Flex Data Service,早已更名为LiveCycle Data Service),不过从来没实际在项目中用过,由于现在的做的产品主要就是在这个架构上运行,因此有必要重新学习学习。
Flex+LCDS(BlazeDS)+Java这种方式对大型的企业级相关应用是比较好的选择。
网上关于Flex + BlazeDS + Java的安装配置文章很多,大都是按照官方的方式,使用向导的方式来进行的,而且通常使用的是BlazeDS Turkey(集成了Tomcat的BlazeDS版本),而且使用了WTP(Web Tools Platform的简称,允许开发人员在Eclipse下开J2EE Web应用),虽然配置比较简单,但由于采用向导的方式,实际上并不灵活,通过实践,推荐下面一种比较灵活的方式 ^_^我会将我在安装配置的过程遇到的常见问题一并指出,我自己做个记录,大家也可少走点弯路
我用的软件环境:
JDK 1.6
Eclipse 3.4.1
Flex 3 plugin for Eclipse (升级到Flex 3.0.214193,Flex SDK为3.2)
Sysdeo Eclipse Tomcat Launcher plugin (一款Eclipse下的Tocamt插件)
Tomcat6.0.13 (我用的是zip包,直接解压就用)
BlazeDS (我下载的是 blazeds-bin-3.2.0.3978.zip)
其中Tomcat的插件下载地址为:http://www.eclipsetotale.com/tomcatPlugin.html#A1 其它的相关软件大家应该都知道。
安装:
上面的所有工具安装都很简单,注意安装后请配置好JDK与Tomcat的环境变量,BlazeDS这里不需安装,下面讲 Hello World再说怎么使用。
Tomcat Launcher plugin插件安装好后,在eclipse中配置如下:

然后一步一步来创建Hello World:
先看一下完成后的项目结构图:

一、创建Java项目:
选择new->Java Project创建一个普通Java项目,其中注意的是为了与flex源文件目录区分,将java项目的源文件目录自定义为javasrc,并设定java class默认的输出目录,如下图:

(创建完成后可将本身的src目录删掉)
创建一简单的HelloWorldService类,用来当Flex端通过BlazeDS以RemoteObject的方式直接访问,SimpleService.java内容很简单,如下:
1: package com.jexchen.blazeds;
2:
3: public class HelloWorldService {
4: public String sayHello(String str) {
5: return “Hello, “ + str;
6: }
7: }
将blazeds-bin-3.2.0.3978.zip解压,得到flex.war, war其实就是一打包文件,使用解压软件将其解压,得到META-INF与WEB-INF两个目录,将WEB-INF目录下的flex、lib目录及web.xml文件复制到当前应用程序的WEB-INF目录下,在HelloBlazeDS项目上点右键,刷新,这时eclipse中HelloBlazeDS项目目录结构如下图所示:

二、为当前Java项目增添Flex Project支持
在HelloBlazeDS项目上点击右键,选Flex Project Nature –> Add Flex Project Nature如下图:

不选任何服务器支持,呆会手动配置:

指定Flex的编译生成目录至WEB-INF\flex,其中flex目录为新创建的:

按提示,切换到Flex视图,这时会报一个错误

在错误提示信息上点击右键,选择Recreate HTML Templates,为生成的swf重建HTML模板。
三、增添Tomcat服务器支持
在HelloBlazeDS项目上点击右键,选择Properties,打开的配置面板中选择Tomcat,设置参数如下:

完成设置。
(你会发现在我的d:\tomcat6.0.13\conf\Catalina\localhost\目录下生成了名为hello.xml的文件,生成该文件的目的就是为HelloBlazeDS项目在Tomcat下配置了一个独立的Context,这样就不必将文件布署到Tomcat的webapps下去了。
四、完成BlazeDS配置并创建Flex客户端程序
编辑WEB-INF\flex\remoting-config.xml文件,增添下面的语句:
1: <destination id=”helloservice”>
2: <properties>
3: <source>com.jexchen.blazeds.HelloWorldService</source>
4: </properties>
5: </destination>
在src下创建Flex应用程序HelloBlazeDS.mxml (MXML Application类型),代码如下:
1: <?xml version=”1.0″ encoding=”utf-8″?>
2: <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”vertical”>
3: <mx:Script>
4: <![CDATA[
5: import mx.controls.Alert;
6: private function onCall():void {
7:
8: myService.sayHello(nameInput.text);
9: }
10: ]]>
11: </mx:Script>
12: <mx:RemoteObject id=”myService” destination=”helloservice” endpoint=”http://localhost:8080/hello/messagebroker/amf” />
13: <mx:TextInput id=”nameInput” />
14: <mx:Button label=”Call” click=”onCall()”/>
15:
16: <mx:TextArea text=”{myService.sayHello.lastResult}” />
17: </mx:Application>
需要注意的是Flex compiler的参数设置,我们这种完全手动配置的情况尤其需要注意,下面是我的参数配置,具体含义请查看相关资料:)
-context-root “webRoot” -services “e:/workspace/javaeeworkspace/HelloBlazeDS/webRoot/WEB-INF/flex/services-config.xml” -locale en_US
ok,现在可以点击工具栏上的小猫图标,启动Tomcat了,在浏览器输入以下地址:
http://localhost:8080/hello/flex/HelloBlazeDS.html
运行运行~~~效果如下:
