要实现flex与Java的交互,主要的配置对象是针对后台JAVA工程进行配置,后台需要的配置文件和JAR包在我的资源中已经上传,名为“blazeds.rar”,各位也可以在网上直接下载。
由于本人也是初学者,对该交互理解也不是特别深,所以重点会讲解如何配置,至于为什么这样配置只能凭我的个人理解去作些简单说明,也希望各位高手们能多多指点。
废话不多说了,直接上图:
一)将blazed工程中的FLEX和lib文件夹中xml文件和jar包覆盖到你的目标后台中,两文件夹中文件列表如图:
flex文件夹:
,lib文件夹:
务必核对清楚,千万别少了什么jar包。
二)对java工程的web.xml文件进行配置,配置信息如下:
如图,标红的地方为千万要注意的,这几行配置一定不要弄丢了,因为这个地方是给flex通过amf向后台请求时,java识别的URL标识,
加上这两段后,基本上后台的配置就配好了,当flex前端需要向后台发出请求时,只需对remot-config配置文件中添加对应的action指向就可以,代码如下:
注:配置中的“ID”是flex前端引用的名称,"source"则是指向后台的目标类文件。
后台配置完成了,再说说前台如何进行请求,以及如何对flex前端的reomoteObject类进行封装重定义:
创建一个MyRemotObject类文件,继承RemoteObject,然后再该类中,添加如下方法(failure:Function方法省略了,可以自己随便定义并作相应的处理):
public static function process(token:AsyncToken, successFunction:Function,failure:Function=null,isShowProcessBar:Boolean=true):void{
if(failure == null){
failure = Failure;
}
token.addResponder(new mx.rpc.Responder(
function(event:ResultEvent):void{
FlexGlobals.topLevelApplication.processBarVisible = false;
successFunction(event);
},
function(event:FaultEvent):void{
FlexGlobals.topLevelApplication.processBarVisible = false;
failure(event);
}
));
}
截图如下:
,写好上面的类方法后,我们在项目中,当需要向后台发出请求时,就不用每个文件中都添加 mx:RemoteObject 这个玩意了,太麻烦,也不方便。
引用上述方法访问后台的格式是:
MyRemoteObject.process(instance.sayHelloWorld(name), function(event:ResultEvent):void{
handler(event.result.toString());
});
截图如下:
1)标红框的地方是一个简单的实现singleton的方法体,主要是希望每次请求时,只创建一次remoteObject,其中,“红框”中,new MyRemoteObject("")引号中的“testService",就是JAVA后台中”Remote-config“中,配置的ID的值,
2)下面用”蓝框”标识的是,访问后台JAVA中的方法名,括号中的参数则是传给JAVA后台的参数,通过AMF方式与后台交互,参数可以是String也可以是Object,如果是Object,后台接收时,可以当成Hashmap类型来接收参数。
添加完上面几个配置文件和类文件后,基本上可以进行测试了,只要严格按我上面的方法来做,不要少了或漏配什么文件,相信一定是可以运行成功的,如果配置完后运行不起来的话,请留言给我,大家再一起探讨一起学习下!