? 什么是BlazeDS呢?BlazeDS是一个基于服务器的Java远程调用(remoting)和Web消息传递(messaging)技术,它能够使 得后台的Java应用程序和运行在浏览器上的Flex应用程序相互通信。在各大搜索引擎里,关于BlazeDS的中文教程来来去去都是那几篇,而且都是使 用Eclipse来开发Flex的(用Eclipse开发Flex跟Java很不错的)。这篇文章将会尝试着使用Flex Builder 3,用一个经典的“HelloWorld”例子来让你学会BlazeDS的使用方法。
??????? 在开始之前,你需要安装JDK和Tomcat并实现成功配置,请参考其他资料
一、我电脑上的配置是如下四点,如果你电脑上的配置不同于以下四点,可能需要你对你的电脑进行修改一下:
??????? 1、Window XP;
??????? 2、Tomcat 6.0
??????? 3、Tomcat服务器使用端口8080;
??????? 4、使用Flex Builder 4而非Eclipse。
二、如果你对以下操作比较陌生,那你应该先熟悉一下以下操作:
??????? 1、写一个Java文件并编译它;
??????? 2、使用Flex Builder 4;
??????? 3、停止和开户Tomcat服务器。
三、下载BlazeDS:
??????? 1、网址:http://opensource.adobe.com/wiki/display/blazeds/Release+Builds ;
??????? 2、下载那个“BlazeDS binary distribution”(http://download.macromedia.com/pub/opensource/blazeds/blazeds-bin-4.0.0.14931.zip );
??????????????? i. 把那个 .zip 文件保存到你的电脑上
??????????????? ii. 里面有两个文件:blazeds.war 和 blazeds-bin-readme.html
??????????????? iii. 把里面的 blazeds.war 文件解压到这个目录下:[tomcat-home]webapps
??????? 3、如果Tomcat正在运行,请停止它然后再启动它(就是重启Tomcat);
??????? 4、打开这个目录:[tomcat-home]webapps
??????????????? i. 你应该会看到一个名为“blaseds”的文件夹
??????????????? ii. 在blaseds文件夹里,会有一个名为“WEB-INF”的文件夹
??????????????? iii. 在WEB-INF文件夹里会有很多文件夹,其中有一个名为“classes”的文件夹。Flex应用程序需要使用到的Java class就是放到这个文件夹里的
??????????????? iv. 还有一个名为“flex”的文件夹,它里面有一个remoting-config.xml,我们要在这个remoting-config.xml文件里添 加destination结点来告诉Flex应用程序如何连接上Java class的
四、使用文本编辑器编写以下这个Java文件并命名为“HelloWorld.java”:
- package cn . riahome . java ;
- ?
- public ? class HelloWorld {
- ?
- ? public ? HelloWorld () {
- ? }
- ?
- ? public ? String getHelloWorld () {
- ?? return ? " Hello World! " ;
- ? }
- }
编译这个Java文件并得到HelloWorld.class文件。在 [tomcat-home]webappsblazedsWEB-INFclasses 目录下新建一个名为“cn”的文件夹,然后在cn文件夹新建一个“riahome”文件夹,接着在riahome文件夹里新建一个“java”文件夹,最 后把刚才编译得到的HelloWorld.class文件放到java文件里,HelloWorld.class的路径应该为:[tomcat- home]webappsblazedsWEB-INFclassescnriahomejavaHelloWorld.class
五、打开 [tomcat-home] webappsblazedsWEB-INFflexremoting-config.xml 这个文件,然后在</default-channels>标签之后和</service>标签之前添加以下结点(注意id属性和 source结点的值,source结点描述了完整的包路径和类名):
- < destination id = " helloWorld " >
- ? ? < properties >
- ? ? ? ? < source > cn.riahome.java.HelloWorld </ source >
- ? ? </ properties >
- </ destination >
六、如果Tomcat正在运行,请停止它然后再启动它(就是重启Tomcat);
七、请按以下步骤新建一个名为“HelloWorld”的Flex Project:
?
?
八、在 HelloWorld.mxml 文件的<mx:Application></mx:Application>标签之间添加如下代码:
- < mx:Script >
- ? ? ? ? < ![ CDATA [
- ? ? ? ? ? ?
- ? ? ? ? ? ? import ? mx . rpc . events . FaultEvent ;
- ? ? ? ? ? ? import ? mx . controls . Alert ;
- ? ? ? ? ? ? import ? mx . rpc . events . ResultEvent ;
- ? ? ? ? ? ?
- ? ? ? ? ? ? private ? function resultHandler ( event:ResultEvent ) :void
- ? ? ? ? ? ? {
- ? ? ? ? ? ? ? ? // 显示收到的 " Hello World! " 数据
- ? ? ? ? ? ? ? ? Alert . show ( event . result . toString (), " 提示 " );
- ? ? ? ? ? ? }
- ? ? ? ? ? ?
- ? ? ? ? ? ? private ? function faultHandler ( event:FaultEvent ) :void
- ? ? ? ? ? ? {
- ? ? ? ? ? ? ? ? Alert . show ( event . fault . toString (), " 提示 " );
- ? ? ? ? ? ? }
- ? ? ? ? ? ?
- ? ? ? ? ]] >
- ? ? </ mx:Script >
- ? ?
- ? ? < mx:RemoteObject ? id = " remoteObject " destination = " helloWorld " source = " cn.riahome.java.HelloWorld "
- ? ? ? ? result = " resultHandler(event) " ? fault = " faultHandler(event) " />
- ? ?
- ? ? < mx:Button ? label = " 发送 " click = " remoteObject.getHelloWorld() " />
九、按F11测试,你看到一个叫“发送”的按钮,按一下它,会弹出“Hello World!”,这是后台发送过来的。至此,我得恭喜您!您成功了!
十、最后需要注意的是:<mx:RemoteObject>标签的destination属性值必须跟remoting-config.xml文件里destination标签的id值一致!
如果您还是测试不成功,请注意以下几点: 1、核实HelloWorld.class文件已经在[tomcat-home]webappsblazedsWEB-INFclassescnriahomejava目录下; 2、检查remote-config.xml文件里是否已经添加了上述的<destination>标签; 3、有没有重启Tomcat服务器; 4、检查<mx:RemoteObject>标签有没有这两个属性:destination=”helloWorld”、source=”cn.riahome.java.HelloWorld” 5、打开Flex Project的属性面板,查看 Flex Compiler 里的Additional compiler arguments选项,是否已经有“-services”指令,如下图(通常在新建Project的时候就自动添加的) 6、打开Flex Project的属性面板,再次检查 Flex Server 里的 Root folder、Root URL、Conntext root,按一下 Validate Location 按钮测试是否成功 7、检查所有代码有没有错误