游戏开发者社区

[Flex] 转:用一个HelloWorl例子手把手教会你使用BlazeDS

查看: 29287|回复: 69

Rank: 7Rank: 7Rank: 7Rank: 7

威望
50 点
义气
17 点

AQ小生

发表于 2008-8-10 18:48:56 |显示全部楼层
原文:http://www.riahome.cn/?p=69

        什么是BlazeDS呢?BlazeDS是一个基于服务器的Java远程调用(remoting)和Web消息传递(messaging)技术,它能够使得后台的Java应用程序和运行在浏览器上的Flex应用程序相互通信。在各大搜索引擎里,关于BlazeDS的中文教程来来去去都是那几篇,而且都是使用Eclipse来开发Flex的(用Eclipse开发Flex跟Java很不错的)。这篇文章将会尝试着使用Flex Builder 3,用一个经典的“HelloWorld”例子来让你学会BlazeDS的使用方法。
        在开始之前,你需要安装JDK和Tomcat并实现成功配置,详细请看:Tomcat 6.0 配置

一、我电脑上的配置是如下四点,如果你电脑上的配置不同于以下四点,可能需要你对你的电脑进行修改一下:
        1、Window XP;
        2、Tomcat 6.0,安装在“C:\Program Files\Apache Software Foundation\Tomcat 6.0\”,下文会使用“[tomcat-home]”来代替这长长的目录路径;
        3、Tomcat服务器使用端口8080;
        4、使用Flex Builder 3而非Eclipse。

二、如果你对以下操作比较陌生,那你应该先熟悉一下以下操作:
        1、写一个Java文件并编译它;
        2、使用Flex Builder 3;
        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_3-0-0-544.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”:

  1. package cn.riahome.java;

  2. public class HelloWorld {

  3. public HelloWorld() {
  4. }

  5. public String getHelloWorld() {
  6. return "Hello World!";
  7. }
  8. }
复制代码


编译这个Java文件并得到HelloWorld.class文件。在 [tomcat-home]\webapps\blazeds\WEB-INF\classes 目录下新建一个名为“cn”的文件夹,然后在cn文件夹新建一个“riahome”文件夹,接着在riahome文件夹里新建一个“java”文件夹,最后把刚才编译得到的HelloWorld.class文件放到java文件里,HelloWorld.class的路径应该为:[tomcat-home]\webapps\blazeds\WEB-INF\classes\cn\riahome\java\HelloWorld.class
五、打开 [tomcat-home]\ webapps\blazeds\WEB-INF\flex\remoting-config.xml 这个文件,然后在</default-channels>标签之后和</service>标签之前添加以下结点(注意id属性和source结点的值,source结点描述了完整的包路径和类名):

  1. <destination id="helloWorld">
  2.     <properties>
  3.         <source>cn.riahome.java.HelloWorld</source>
  4.     </properties>
  5. </destination>
复制代码

[ 本帖最后由 Y.Boy 于 2008-8-13 17:20 编辑 ]
本帖评分记录:1人评分    银子+20 
morningyi 银子 + 20 精品文章

举报

Rank: 7Rank: 7Rank: 7Rank: 7

威望
50 点
义气
17 点

AQ小生

发表于 2008-8-10 18:49:44
原文:http://www.riahome.cn/?p=69

六、如果Tomcat正在运行,请停止它然后再启动它(就是重启Tomcat);


七、请按以下步骤新建一个名为“HelloWorld”的Flex Project:



八、在 HelloWorld.mxml 文件的<mx:Application></mx:Application>标签之间添加如下代码:

  1. <![CDATA[

  2. import mx.rpc.events.FaultEvent;
  3. import mx.controls.Alert;
  4. import mx.rpc.events.ResultEvent;

  5. private function resultHandler(event:ResultEvent):void
  6. {
  7. // 显示收到的 "Hello World!" 数据
  8. Alert.show(event.result.toString(), "提示");
  9. }

  10. private function faultHandler(event:FaultEvent):void
  11. {
  12. Alert.show(event.fault.toString(), "提示");
  13. }

  14. ]]>


  15. <mx:RemoteObject id=remoteObject
  16. result="resultHandler(event)" fault="faultHandler(event)"/>
复制代码
九、按F11测试,你看到一个叫“发送”的按钮,按一下它,会弹出“Hello World!”,这是后台发送过来的。至此,我得恭喜您!您成功了!

十、最后需要注意的是:<mx:RemoteObject>标签的destination属性值必须跟remoting-config.xml文件里destination标签的id值一致!
如果您还是测试不成功,请注意以下几点:
1、核实HelloWorld.class文件已经在[tomcat-home]\webapps\blazeds\WEB-INF\classes\cn\riahome\java目录下;
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、检查所有代码有没有错误

[ 本帖最后由 Y.Boy 于 2008-8-13 17:26 编辑 ]

举报

Rank: 5Rank: 5

威望
1 点
义气
5 点
发表于 2008-8-12 13:02:37
真乃高手,路过学习了

举报

Rank: 5Rank: 5

威望
0 点
义气
5 点
发表于 2008-8-12 13:08:48
BlazeDS没接触过,看介绍不错的东东!学习!!

举报

Rank: 3Rank: 3Rank: 3

威望
0 点
义气
5 点
发表于 2008-8-26 22:24:39
一直用AMFPHP, 配置基本一样, 看来后台基本以RemoteObject为主

举报

Rank: 4

威望
0 点
义气
5 点
发表于 2008-9-20 22:43:28
适不适合企业级的开发

举报

Rank: 5Rank: 5

威望
1 点
义气
5 点

AQ小生

发表于 2008-9-22 08:30:30
这也是我想问的
从这个例子看来好像逻辑方面并没有分离,BlazeDS只是提供了一种基于JSP的交互体系,但用于企业级开发应该还需要做别的工作

举报

Rank: 1

威望
0 点
义气
5 点
发表于 2008-11-18 08:29:10
還是C#的 WebService 來得方便點

举报

Rank: 5Rank: 5

威望
18 点
义气
7 点

AQ大侠 AQ小生

发表于 2008-12-2 17:55:06
原帖由 zhb2007 于 2008-8-26 22:24 发表
一直用AMFPHP, 配置基本一样, 看来后台基本以RemoteObject为主

我也是用的amfPHP,呵呵

举报

Rank: 5Rank: 5

威望
4 点
义气
16 点
发表于 2008-12-19 19:33:58
新手

感激!                    ·

举报

头像被屏蔽

273289658

Rank: 4

威望
0 点
义气
5 点
发表于 2009-1-25 18:05:10
提示: 作者被禁止或删除 内容自动屏蔽

举报

头像被屏蔽

273289658

Rank: 4

威望
0 点
义气
5 点
发表于 2009-2-11 02:52:18
提示: 作者被禁止或删除 内容自动屏蔽

举报

Rank: 6Rank: 6Rank: 6

威望
9 点
义气
8 点
发表于 2009-2-12 19:06:56
顶下先!

举报

Rank: 4

威望
0 点
义气
5 点
发表于 2009-2-13 00:05:38
适不适合企业级的开发
xeepy 发表于 2008-9-20 22:43

举报

Rank: 7Rank: 7Rank: 7Rank: 7

威望
8 点
义气
6 点
发表于 2009-2-16 17:20:18

举报

您需要登录后才可以回帖 登录 | 注册

关闭

江湖传闻

手机版|9RIA.com ( 京ICP备11007422号-2 

GMT+8, 2017-7-23 20:49 , Processed in 0.123370 second(s), 20 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部