理由九:可以通过Java来扩展和修改BlazeDS
假如你想添加特殊的日志来记录苏打调配服务被调用的情况,那么你可以扩展标准的Java适配器来添加日志功能。
首先,添加一个继承了JavaAdapter的Java类:
1 import flex.messaging.services.remoting.adapters.JavaAdapter.
2
3 public class TimingJavaAdapter extends JavaAdapter {
2
3 public class TimingJavaAdapter extends JavaAdapter {
其次,重载invoke()方法:
1 public Object invoke(Message message) {
2
3 RemotingMessage remotingMessage = (RemotingMessage) message;
4
5 String operation = remotingMessage.getOperation();
6
7 String destination = remotingMessage.getDestination();
8
9 Logger.info("calling " + operation + " on destination " + destination);
10
11 Object data = super.invoke(message);
12
13 return data;
14
15 }
2
3 RemotingMessage remotingMessage = (RemotingMessage) message;
4
5 String operation = remotingMessage.getOperation();
6
7 String destination = remotingMessage.getDestination();
8
9 Logger.info("calling " + operation + " on destination " + destination);
10
11 Object data = super.invoke(message);
12
13 return data;
14
15 }
这个方法中,你可以看到调用之后的操作和调用的目的地(destination)。这种方法也能用来处理其它一些问题,比如记录向服务器发送调用需要多长时间。
理由十:HTML和JSP也能调用BlazeDS
从HTML和JSP也能调用BlazeDS,这种调用有几种不同的实现方式,比如通过Browser Manager或fflashVarsf来实现。Flex应用能够读取由HTML页面设置的fflashVarsf。
比方说你想要通过HTML页面来发送你的用户名和准备预定的苏打类型,你可以在HTML页面这样设置flashVars:
1 <object id='SodaSample' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'>
2 <param name='src' value='SodaSample.swf'/>
3 <param name='flashVars' value='username=ryan&type=coke'/>
4 <embed name='mySwf' src='SodaSample.swf' pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%' flashVars='username=ryan&type=coke'/>
5 </object>
2 <param name='src' value='SodaSample.swf'/>
3 <param name='flashVars' value='username=ryan&type=coke'/>
4 <embed name='mySwf' src='SodaSample.swf' pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%' flashVars='username=ryan&type=coke'/>
5 </object>
然后,在Flex应用中,你可以通过读取应用参数来获取这些变量:
1 var username:String;
2
3 if (Application.application.parameters.hasOwnProperty("username")) {
4
5 username = Application.application.parameters.username;
6
7 }
8
2
3 if (Application.application.parameters.hasOwnProperty("username")) {
4
5 username = Application.application.parameters.username;
6
7 }
8