Cinnamon基于AS3项目的例子

有些朋友会说Cinnamon的测试例子有点难搭起,过程遇到的问题比较多。所以在我就放上一个基于AS3项目工程的例子,过一阵再把后台基于Spring的例子放出来。
大家做例子前,建议先仔细看看官方的说明,非常详细。我也是看它做的,这里我就简单说了
现在先简单说说,基本上,客户端的remoting服务类,是采用ant根据服务端的接口生成的。下面是配置文件

现在我的服务器有一个接口CounterService和他的实现类CounterServiceImpl
那么根据这个配置文件则会生成同样的as:CounterService.as和CounterServiceImpl.as
(要注意一点的是,需要把generatorTemplates目录复制到项目里面,或者自己去配置路径,增加了模板才能够生成客户端文件的)
CounterServiceImpl.java比较简单
程序代码 程序代码

package example;

public class CounterServiceImpl implements CounterService
{
    private int counter = 0;
    public int getNextValue () 
    {
        System.out.println("调用了getNextValue方法");
        return ++counter;
    }
    public void reset () 
    {
        System.out.println("清楚原有数据eset");
        counter = 0;
    }
    public TestVo sendVo(TestVo vo)
    {
        vo.setName("服务器返回:" + vo.getName());
        vo.setName("服务器返回:" + vo.getPath());
        return vo;
    }
}


客户端使用就比较简单了,建立一个ServiceInitializer来初始化services
程序代码 程序代码

public function createService (url:String, errorHandler:Function) : CounterService 
    { 
        var channel:ServiceChannel = new NetConnectionServiceChannel();
        channel.serviceUrl = url;
        channel.timeout = 5000;
        //实例化一个网络服务器,如果有多种服务,就需要实例多个
        var counter:CounterService = new CounterServiceImpl();
        //这里是的服务名称是和要服务器对应的
        channel.createProxy("counter", counter);
        channel.addEventListener(ServiceEvent.ERROR, errorHandler);
        return counter;
    }

再来就是主类调用了
程序代码 程序代码

package {
    import example.CounterService;
    import example.ServiceInitializer;
    import example.TestVo;
    
    import flash.display.Sprite;
    import flash.net.registerClassAlias;
    
    import org.spicefactory.cinnamon.client.ErrorMessage;
    import org.spicefactory.cinnamon.client.ServiceEvent;

    /**
     * 基于as项目测试Cinnamon 
     * @author Soda.Chen
     * @link www.sodaChen.com
     * 
     */    
    public class Cinnamon extends Sprite
    {
        private var service:CounterService;

        public function Cinnamon()
        {
            registerClassAlias("model::TestVo",TestVo);
            var si:ServiceInitializer = new ServiceInitializer();
            var url:String = "http://localhost:8080/Cinnamon/service/";
            service = si.createService(url, errorHandler);
            //测试服务器的getNextValue方法
            service.getNextValue().addResultHandler(onNextValue);
            //发送一个VO到服务器
            var vo:TestVo = new TestVo();
            vo.name = "soda";
            vo.path = "www.sodaChen.com";
            service.sendVo(vo).addResultHandler(onSendVo);

        }
        private function onSendVo(vo:TestVo):void
        {
            trace("vo.name:" + vo.name);
            trace("vo.name:" + vo.path);
        }
        private function onNextValue (nextValue:uint) : void 
        {
            trace("-------nextValue------:" + nextValue);
        }    
        private function errorHandler (event:ServiceEvent) : void 
        {
            var error:ErrorMessage = event.response.result as ErrorMessage;
            trace("-----ERROR----:" + error.message);
        }
}

最后输出结果是:
-------nextValue------:1
vo.name:服务器返回:www.sodaChen.com
vo.name:www.sodaChen.com

最后奉上客户端和服务端的源代码。把服务端的web放到tomcat目录下,再启动客户端工程连接,就OK啦
(包含了jar,所以文件比较打,有5.2MB)
下载文件 点击下载此文件



[本日志由 弃天笑 于 2009-03-22 01:49 PM 编辑]
文章来自: 本站原创
引用通告地址: http://www.sujun.org/trackback.asp?tbID=46
Tags: cinnamon 例子 AS3 项目
评论: 1 | 引用: 0 | 查看次数: 2208
  • 1
army [2009-07-30 03:32 PM]
我过来灌下水,hoho~
  • 1
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码:
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭
Google