flex使用BlazeDS远程调用java

近段时间在学习flex和java如何调用的时候看到了BlazeDS,在网上找了一些资料,整理了一下,并自己做了个简单的HelloWord例子,本篇文章只是对flex使用BlazeDS远程调用的整理学习之用。

什么是BlazeDS呢?BlazeDS是一个基于服务器的Java远程调用(remoting)和Web消息传递(messaging)技术,它能够使得后台的Java应用程序和运行在浏览器上的Flex应用程序相互通信。
1.下载BlazeDS:http://opensource.adobe.com/wiki/display/blazeds/Release+Builds ——》》Download the BlazeDS binary distribution
2.下载完后将里面的 blazeds.war 文件解压到tomcat的webapps
目录下,然后启动tomcat,在webapps下生成了blazeds文件夹,关闭tomcat。

3.打开blazeds文件夹,在WEB-INF文件夹下有个flex文件夹,其中包含是个xml文件:messaging-config.xml、proxy-config.xml、remoting-config.xml、services-config.xml,这些文件对应相应的服务:远程调用(在remoting-config.xml中配置)、访问代理(proxy-config.xml)、消息服务(messaging-config.xml),同时框架允许你添加自定义的服务(在services-config.xml中配置)。
1.远程调用。其实框架在这里起到的作用和struts等服务端的框架差不多,都是任务分配的功能,只不过blazeDS支持客户端直接对象调用,一方面提高了数据传输速度,另一方面省了在客户端写url,但是它需要编译客户端的时候关联服务端配置文件,烦!综合考虑优缺点,这个功能还是值得使用的。
2.访问代理。能够提供权限控制,和跨域访问的能力。这个任何web服务器都能做到(加httpClient转发么),没什么特殊之处。
3.消息服务。这个正式blazeDS 牛的地方,它能向普通的浏览器客户端页面推送数据,而不需要建立socket链接。这个应用在很多地方都有用到,比如股票信息即时刷新,在线聊天等等需要实时数据推送的场景。

接下来做个远程调用的hello world例子:
简单描述下开发环境:
IDE:Flex Builder 3
服务器:tomcat6.0

1.写个java类:helloWord

package com.flex.test;

public class HelloWorld {

public HelloWorld() {
}

public String getHelloWorld() {
return "Hello World!";
}
}

编译HelloWord,并把编译的class文件放到刚才下载的blazeds.war 下的\WEB-INF\classes文件夹下,注意:我们把HelloWorld打包到了com.flex.test;所以同样需要在classes文件夹下创建com\flex\test这些文件夹,然后把HelloWorld.class放到\WEB-INF\classes\com\flex\test下。
2.接下来配置remoting-config.xml文件:
在标签前加入:



com.flex.test.HelloWorld



其中id属性我们在flex调用的时候会用到,source结点描述了完整的包路径和类名。

3.创建Flex项目:HelloWord

4.编辑HelloWord.mxml:




import mx.rpc.events.FaultEvent;
import mx.collections.ArrayCollection;
import mx.rpc.remoting.mxml.RemoteObject;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;

public function submit():void{
var remote:RemoteObject = new RemoteObject();
//调用在J2EE端remoting-config.xml中配置的暴露出的类的名称 id
remote.destination = "helloWorld";
//调用J2EE端类中的方法
remote.getHelloWorld();
//监听调用成功事件
remote.addEventListener(ResultEvent.RESULT,result);
//监听失败事件
remote.addEventListener(FaultEvent.FAULT,fault);
}

private function result(evt:ResultEvent):void{
Alert.show(evt.result.toString());
}

private function fault(evt:FaultEvent):void{
Alert.show("调用失败!");
}
]]>








5.重起tomcat,然后运行HelloWorld.mxml。

附件包含:blazeds.war和Flex项目:HelloWorld,运行例子只需要把blazeds.war放到tomcat的webapps目录下,然后运行HelloWorld.mxml即可。

你可能感兴趣的:(Flex)