`
wenson
  • 浏览: 1053631 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

  1. class idv.swl.remoting.myClass {
  2.  var count:Number;
  3.  var log:String;
  4.  function myClass() {
  5.  }
  6.  function doTrace() {
  7.   trace("count : "+count);
  8.   trace("log : "+log);
  9.  }
  10. }

3.撰写Server Java Class

Java Class要依循JavaBean的撰写规范
才能进行序列化、反序列化的动作

myClass.java

  1. package idv.swl.remoting;
  2. public class myClass implements java.io.Serializable {
  3.     
  4.     public int count;
  5.     public String log;
  6.     public myClass() {
  7.     }
  8.     
  9.     public void setCount(int count) {
  10.         this.count = count;
  11.     }
  12.     public int getCount() {
  13.         return count;
  14.     }
  15.     
  16.     public void setLog(String log) {
  17.         this.log = log;
  18.     }
  19.     public String getLog() {
  20.         return log;
  21.     }
  22.     
  23.     public void doTrace() {
  24.         System.out.println("count : " + count);
  25.         System.out.println("log : " + log);
  26.     }
  27. }

 

4.撰写测试程序

以下的测试程序是将自订类别(myClass)对象在Client-Server之间互丢
并执行myClass for Java and ASfunction 直到myClass.count计数器累加到3Server Class
  1. package idv.swl.remoting;
  2. public class server {
  3.     
  4.     public static myClass process(myClass obj) {
  5.         obj.count++;
  6.         obj.log += "java processing at " + new Date() + "n";
  7.         obj.doTrace();
  8.         return obj;
  9.     }
  10.     
  11. }

 Flash AS in Frame 1:

  1. //==================================================
  2. import idv.swl.remoting.myClass;
  3. Object.registerClass("idv.swl.remoting.myClass", idv.swl.remoting.myClass);
  4. //==================================================
  5. var nc:NetConnection = new NetConnection();
  6. nc.onResult = function(data) {
  7.  trace("onResult : ");
  8.  data.doTrace();
  9.  if (data.count<3) {
  10.   data.log += "Flash processing at "+new Date()+"n";
  11.   nc.call("idv.swl.remoting.server.process", nc, data);
  12.  }
  13. };
  14. nc.onStatus = function(data) {
  15.  trace("onStatus : ");
  16.  for (var i in data) {
  17.   trace(i+" : "+data[i]);
  18.  }
  19. };
  20. nc.connect("http://localhost:8084/RemotingTest/gateway");
  21. //==================================================
  22. var obj:myClass = new myClass();
  23. obj.log = "";
  24. obj.count = 0;
  25. nc.call("idv.swl.remoting.server.process", nc, obj);
Flash Output:  
 

onResult :
count : 1
log : java processing at Mon Apr 04 14:55:03 CST 2005

onResult :
count : 2
log : java processing at Mon Apr 04 14:55:03 CST 2005
Flash processing at Mon Apr 4 14:55:03 GMT+0800 2005
java processing at Mon Apr 04 14:55:03 CST 2005

onResult :
count : 3
log : java processing at Mon Apr 04 14:55:03 CST 2005
Flash processing at Mon Apr 4 14:55:03 GMT+0800 2005
java processing at Mon Apr 04 14:55:03 CST 2005
Flash processing at Mon Apr 4 14:55:03 GMT+0800 2005
java processing at Mon Apr 04 14:55:03 CST 2005

 

 

此文章收藏自Ticore's blog:http://ticore.blogspot.com/2005/09/openamf.html

分享到:
评论

相关推荐

    openamf-1.0RC12-exampless.rar

    压缩包中的"openamf-1.0RC12-exampless"目录下,应包含了多个示例项目,这些项目展示了如何在不同场景下使用OpenAMF: 1. **BasicExample**:基础示例,展示如何设置AMF服务端和客户端的基本配置,以及如何处理基本...

    openamf-java

    【标题】"openamf-java" 是一个基于Java实现的远程方法调用(Remoting)框架,名为OpenAMF。这个框架允许开发者在不同的应用程序之间高效地交换数据和服务,特别适用于构建分布式系统。 【描述】"openamf,java版本的...

    openamf-1.0RC12.zip

    FLEX连接java的开源框架

    openamf-1.0.2

    《OpenAMF:开启Flash与服务器间的高效通讯》 OpenAMF,全称为Open Action Message Format,是一款开源的、基于AMF(Action Message Format)的通信框架,它为Flash客户端和服务器端之间的数据交换提供了高效的序列...

    java调用openamf实例,把取回的结果转换成list或bean.

    AMFClient client = new AMFClient("http://your-openamf-server/openamf"); Message response = client.send("yourServiceName", "yourMethod", new Object[] {参数}); ``` 3. **处理返回结果** `response`对象...

    第十五节 OPENAMF.docx

    1. 首先,你需要下载OpenAMF的发布包,例如openamf-1.0RC12.zip,并将其解压缩。在解压后的文件中,找到`openamf.war`文件。 2. 如果你使用的Java服务器是Tomcat,将`openamf.war`复制到Tomcat的`webapps`目录下。...

    openamf最完整实例java + flash+eclipse工程源码

    OpenAMF,全称为Open Action Message Format,是一个开源的Java框架,主要用于在Java服务器和Adobe Flash客户端之间建立灵活的数据通信。这个框架允许开发者利用ActionScript(Flash编程语言)与Java进行交互,实现...

    构建FLASH和JAVA FOR SPRING应用(一)

    `openamf-config.xml`是OpenAMF的配置文件,它定义了服务端的Remoting Gateway设置,包括路由策略、安全配置、以及如何将AMF请求映射到Java服务等。理解并正确配置这个文件对于确保Flash客户端能够正确连接到Spring...

    openamf自行小改动获取客户端请求IP

    NULL 博文链接:https://balan326.iteye.com/blog/1285663

    struts,spring,hibernate.jar 包大全(五)

    - openamf.jar:可能是一个Flex或AMF(Action Message Format)相关的库,用于客户端与服务器间的数据传输。 - junit.jar:JUnit是Java单元测试的标准框架,用于编写和执行测试代码。 - jsp-api-2.0.jar:JavaServer...

    Flex4 SQL2005

    - **OpenAMF**:基于Java的开源项目,目前仅支持AMF0。 - **GDS (Granite Data Services)**:基于Java平台,支持AMF3。 - **WebORB**:支持.NET, Java, PHP, Ruby等多种平台,同时支持AMF0和AMF3。 - **FluorineFX**...

    Moonfree-开源

    2. **OpenAMF**:OpenAMF是开源的AMF(Action Message Format)服务器,它允许Flex与后端服务器之间进行高效的二进制数据交换。在Moonfree中,OpenAMF起到了关键的桥梁作用,它使Flex能够与Java应用程序无缝对接,...

    flex and blazed blazeds简单例子

    已经在早前就听说了,Adobe公司的开源项目bazeds,可是当时做flash,用到了openamf,所以没有在意,但是现在觉得flex开发应用软件更具有杀伤力,所以准备研究flex。折腾了一周的时间想做个flex+java的helloworld例子...

    IM 即时通讯 开发实例

    在Flex中开发XMPP应用,通常会结合Adobe BlazeDS或OpenAMF等中间件,它们可以处理与Java后端的通信。BlazeDS提供了与Java Remoting和Web Services的集成,使得Flex客户端可以方便地调用服务器端的方法,实现XMPP功能...

    FLEX培训总结

    此外,还有其他通信方式,如OpenAMF,它们实现ActionScript与Java数据格式之间的转换,使用AMF协议进行序列化和反序列化操作。 ActionScript(AS3)是Flex的基础脚本语言,与Java和JavaScript有诸多相似之处。AS3中...

Global site tag (gtag.js) - Google Analytics