弄了好几天的remoting的,今天终于弄出点东西来了,adobe公司的MM是收费的,所以我没用,可能也是因为我是java程序员的原故,比较喜欢开源的东西!所以,remoting我选择了开源的openamf,他是开源的,并且支持java,还有amfPHP,不过只对php支持,因为我做java所以只讲java是怎么来实现。费话少说,言归正传!
首先要有JDK环境,我用的是tomcat5.5,JDK1.5,知道这两个足够了,其他的开发工具用什么都可以,不过建意用eclipse+myeclipse(初学入门用)。然后去adobe公司的网站去下个flash cs3,注册机网上有的事(建意去买正版)。现在环境大多都有了,还差个remoting的服务,我们就用开源的openamf,下载文件名为openamf-1.0RC12-examples.zip这个文件,解压。把openamf.war放到tomcat/webapps/文件夹下!启动tomcat就会出现一个openamf文件夹!用eclipse新建一个WEB项目,打开openamf/WEB-INF文件夹除了classes文件夹不动,其他的都COPY出来,放到自己新建的项目的WEB-INF里面。注意!!!刚才在启动tomcat的时候会有个错误:
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
如果用过spring的,应该知道怎么做,如果没有用过spring的,那我告诉你们怎么做,先去下载个spring的类包,然后放到自己项目和openamf项目的lib文件夹下就OK了,错误就不会再有了。到现在为止openamf在tomcat服务器上已经可以正常运行,其他的代码怎么写呢???
我来说一下代码怎么写!!打开flash cs3 新建一个 flash file(actionscript3.0) 我用的是E版的,然后按F9,写入代码!
import flash.net.*;
var hostName:String = "http://localhost:8080/flash/gateway";
//说明一下从8080以后的代说,flash是eclipe建项目时候 的名字!gateway是openamf 的一个应射
var nc:NetConnection = new NetConnection();
nc.objectEncoding = 0;
nc.connect(hostName);
nc.call("org.flash.remoting.HelloWord.getHelloWord",new Responder(onResult,onFault),"roading");
//org.flash.remoting是我写的类的包名,HelloWord是类名,getHelloWord是方法名,roading是参数
function onResult(re:Object)
{
trace(re);
}
function onFault(re:Object)
{
for(var i in re)
trace(i+"=>"+re[i]);
}
下面是我的类代码:
package org.flash.remoting;
import java.io.Serializable;
public class HelloWord implements Serializable {
public static final long serialVersionUID = 200709201011l;
public String getHelloWord(String str)
{
System.out.println(str);
return "Hello "+str+" !";
}
}
这时候,代码的工作是写完了,不过,还有修改一部分东西才能用!
打开web.xml把没有用的servlet都删了,不删除也没关系,只是看着碍眼!然后再加一句
<servlet-mapping>
<servlet-name>DefaultGateway</servlet-name>
<url-pattern>/gateway</url-pattern>
</servlet-mapping>
这时候,你运行你的tomcat 然后再切换到你的flash,按Ctrl+Enter试试