Cinnamon基于AS3项目的例子
作者:弃天笑 日期:2009-03-22
有些朋友会说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)
点击下载此文件
大家做例子前,建议先仔细看看官方的说明,非常详细。我也是看它做的,这里我就简单说了
现在先简单说说,基本上,客户端的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 项目
文章来自: 本站原创
Tags: cinnamon 例子 AS3 项目 评论: 1 | 引用: 0 | 查看次数: 2208
- 1
我过来灌下水,hoho~
- 1
发表评论
订阅
上一篇
下一篇





