刚接触这东西的时候去网上了解了哈,BlazeDS用于flex和J2EE交互,首先下载blazeds-bin-3.2.0.3978.zip (4.3 MB) ,对源码感兴趣的可以附加源码后看,当然这个不是最新的,解压后里面有两个文件,使用的是blazeds.war,在对blazeds.war直接解压,解压后有META-INF和WEB-INF两个目录,新建一个HelloWorld的web项目,如图:
我在lib目录下面新建了一个flex文件夹,便于管理哈,不是必须的,直接将blazeds.war解压后的WEB-INF里面的lib里面所有jar放入flex文件夹中,在将WEB-INF里面的flex文件夹放入Helloworld项目的WEB-INF下面,该文件夹里面有4个配置文件:messaging-config.xml,proxy-config.xml,remoting-cofig.xml,services-config.xml
接着讲blazeds.war解压后的WEB-INF里面web.xml替换掉Helloworld里面的web.xml,当然也可以把内容复制过去。
这样java端就配置好了,感觉和struts等框架的配置过程差不多,新建一个HelloWorldBiz类,里面有两个方法给flex调用测试的,代码如下:
package org.story.xxxx.biz;
import java.util.ArrayList;
import java.util.List;
import org.story.xxxx.entity.User;
public class HelloWorldBiz {
public String sayHelloWorld(String username) {
System.out.println("HelloWorldBiz.sayHelloWorld()");
return "欢迎你:" + username;
}
public List getList() {
System.out.println("HelloWorldBiz.getList()");
List list = new ArrayList();
for (int i = 0; i < 10; i++) {
list.add(new User(i, "chenjun" + i, "password" + i));
}
return list;
}
}
在建一个实体作为测试用的,代码如下:
package org.story.xxxx.entity;
public class User {
private int id;
private String username;
private String password;
public User() {
}
public User(int id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
现在配置flex文件夹下面的remoting-config.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?> <service id="remoting-service" class="flex.messaging.services.RemotingService"> <adapters> <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/> </adapters> <default-channels> <channel ref="my-amf"/> </default-channels> <destination id="helloWorldBiz"> <properties> <source>org.story.xxxx.biz.HelloWorldBiz</source> </properties> </destination> </service>
自此需要测试的东西都准备好了。
现在创建flex项目,第一步如图:
注意所选服务为J2EE,下一步如图:
Root folder:定义为server端程序的发布路径,就是HelloWorld项目部署到tomcat下面的webapps路径
Root URL:定位为server端程序的URL访问路径,虚拟路径,最好前面要指明是属于哪个项目下的
Context root:上下文根目录,就是HelloWorld项目名字
Output folder:输出文件夹,该文件夹类似于开发jspWebRoot下面的一个文件夹而已。
组后点击Validate configuration,测试哈时候通过。finish,如图:
FlexHelloWorld.mxml代码如下:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.ResultEvent; import mx.rpc.remoting.mxml.RemoteObject; //声明一个远程对象 private var remote:RemoteObject = new RemoteObject(); //初始化远程对象信息 public function init():void{ //指定要调用的java类,就是remoting-config.xml里面配置的那个东西 remote.destination="helloWorldBiz"; //以下是对两个方法注册结果事件的回调 remote.sayHelloWorld.addEventListener(ResultEvent.RESULT,doHelloWorld); remote.getList.addEventListener(ResultEvent.RESULT,doGetList); } public function doHelloWorld(event:ResultEvent):void{ //将结果显示在文本框中 txtSay.text = event.result.toString(); } public function doGetList(event:ResultEvent):void{ //将后台返回的list直接绑定到dataGrid上面去 dataGrid.dataProvider = event.result; } ]]> </mx:Script> <mx:Button x="10" y="10" label="sayHelloWorld" click="remote.sayHelloWorld('chenjun');"/> <mx:Button x="10" y="40" label="getList" click="remote.getList();" width="108"/> <mx:DataGrid x="126" y="39" width="309" height="202" id="dataGrid"> <mx:columns> <mx:DataGridColumn headerText="id" dataField="id"/> <mx:DataGridColumn headerText="username" dataField="username"/> <mx:DataGridColumn headerText="password" dataField="password"/> </mx:columns> </mx:DataGrid> <mx:TextInput x="126" y="10" width="266" id="txtSay"/> </mx:Application>
至此就完成flex项目,启动tomcat,在运行FlexHelloWorld,点击页面上的两个方法,返回结果,说明成功交互。
没什么技术含量,为了让大家少走弯路,和大家一起分享。源代码BlazeDS的初步使用源码.rar (4.7 MB)