OpenAMF - Custom Class Mapping
关键字: openamf custom class mapping要看这篇文章,先要对Remoting有些概念
Remoting是可以让Flash AS程序与异质(heterogeneric)程序语言直接沟通的接口
也就是让AS可以直接与其它程序语言进行沟通、呼叫、传递对象
可以省去大量的数据解析的动作.
由于不同程序语言的基础型别都不太一样
所以会有一个对象对照表
方便数据在不同程序中传递时进行转换的动作
默认的对象对照仅包含基础型别的对象与常用的容器型别传递其它类别对象的时候
仍然必须自行作少量的数据解析动作
自订类别转换可以补足此一缺憾因为OpanAMF是开放原始码的计划
而且又是连结Java平台接口
功能远比其它版本的Remoting来得强大以下就用OpenAMF介绍自订类别转换的功能
1.设定类别对照
找出OpenAMF设定档
[WebApp]/WEB-INF/openamf-config.xml 在config结点内加入以下XML设定:
<custom-class-mapping>
<java-class>idv.swl.remoting.myClass</java-class>
<custom-class>idv.swl.remoting.myClass</custom-class>
</custom-class-mapping>
这样就可以将Server端的Java Class: idv.swl.remoting.myClass
与Flash端的AS Class:idv.swl.remoting.myClass完成对照
2.撰写Flash AS Class
myClass.as:
- class idv.swl.remoting.myClass {
- var count:Number;
- var log:String;
- function myClass() {
- }
- function doTrace() {
- trace("count : "+count);
- trace("log : "+log);
- }
- }
3.撰写Server Java Class
Java Class要依循JavaBean的撰写规范才能进行序列化、反序列化的动作
myClass.java:
- package idv.swl.remoting;
- public class myClass implements java.io.Serializable {
- public int count;
- public String log;
- public myClass() {
- }
- public void setCount(int count) {
- this.count = count;
- }
- public int getCount() {
- return count;
- }
- public void setLog(String log) {
- this.log = log;
- }
- public String getLog() {
- return log;
- }
- public void doTrace() {
- System.out.println("count : " + count);
- System.out.println("log : " + log);
- }
- }
4.撰写测试程序
以下的测试程序是将自订类别(myClass)对象在Client-Server之间互丢并执行myClass for Java and AS的function 直到myClass.count计数器累加到3Server Class:
- package idv.swl.remoting;
- public class server {
- public static myClass process(myClass obj) {
- obj.count++;
- obj.log += "java processing at " + new Date() + "n";
- obj.doTrace();
- return obj;
- }
- }
Flash AS in Frame 1:
- //==================================================
- import idv.swl.remoting.myClass;
- Object.registerClass("idv.swl.remoting.myClass", idv.swl.remoting.myClass);
- //==================================================
- var nc:NetConnection = new NetConnection();
- nc.onResult = function(data) {
- trace("onResult : ");
- data.doTrace();
- if (data.count<3) {
- data.log += "Flash processing at "+new Date()+"n";
- nc.call("idv.swl.remoting.server.process", nc, data);
- }
- };
- nc.onStatus = function(data) {
- trace("onStatus : ");
- for (var i in data) {
- trace(i+" : "+data[i]);
- }
- };
- nc.connect("http://localhost:8084/RemotingTest/gateway");
- //==================================================
- var obj:myClass = new myClass();
- obj.log = "";
- obj.count = 0;
- nc.call("idv.swl.remoting.server.process", nc, obj);
| onResult : |
此文章收藏自Ticore's blog:http://ticore.blogspot.com/2005/09/openamf.html
- 15:29
- 浏览 (198)
- 评论 (0)
- 分类: Flash&JAVA
- 相关推荐
发表评论
- 浏览: 94593 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
共 1 张
最新评论
-
我们是白领吗?
这是什么标准?个人净得?那可就不低了。
-- by fight_bird -
我们是白领吗?
郑州?五档 NO.1?
-- by Jerry . \ -
我们是白领吗?
老家有这么高的工资??? 我sun... 谁调查的??
-- by lordhong -
我们是白领吗?
应该更新了 使用了假新闻
-- by careprad -
java字符串转换器
有没有探测文字或文件编码的呢?
-- by spiritfrog






评论排行榜