您的位置:首页 > 编程语言 > Java开发

flashremoting实践(三)-hello world for java

2005-10-29 11:56 411 查看
现在我们来学习一下java环境下的hello world程序!

这里我假设你参考了我第一篇文章,已经配置好你的jrun了。

1.我用的是jrun,如果你用的不是jrun那么请去看具体的相关服务器的配置信息,首先在开始->jrun4->jrun management console,点击进入页面之后选择左上角的create new server创建一个新的server,取名为flashremoting,新建之后启动这 个server,然后我们进入jrun程序的文件夹d:/jrun4(我安装在d盘了,如果你的不是,请到相应的文件夹),双击进入 servers文件夹,这时你会看到jrun已经为你在这里创建了flashremoting,双击进入,在进入server-inf在这里我们新建一个名为classes的文件夹,大家可能已经明白了,不错,这个文件夹就是我们放java文件的地方,下面我建立的文件夹比较多,主要是要让大家看一下在flash里是怎么找到你要调用的java文件的,在classes文件夹下建立一个名为com的文件夹,在com文件夹下新建一个名为helloworld的文件夹,在helloworld文件夹下新建一个名为remoting文件夹(呵呵,是不是挺多的,好了文件夹就建立到这里了)

2.这里我建立的是一个javaBean程序,当然flash还能调用像ejb等别的程序,闲话少说,在remoting文件夹下新建一个TestBean.java文件,里面的代码很少也很简单。首先是包信息package com.helloworld.remoting;之后的然后是bean代码

public class TestBean implements java.io.Serializable {
public String getMessage() {
return "hello world!!!";
}
}

在这里一定要注意这个(java.io.Serializable),这是不可少的,然后编译这个文件,编译成功之后我们的工作已经完成了,java端的工作是不是很简单呢,呵呵!!!

3.好了,如果你已经看过我的第二篇文章,那么一会你会发现,flash调用.net程序和调用java程序的代码很相似。首先导入所需要的类,以便flash在编译的时候能找到他们选择菜单栏 窗口->其他面板->公用库->remoting,然后把RemotingClasses拖到舞台上然后删除(这样RemotingClasses类就已经在我们自己的文件的库里了),如果你想在创作中调试的话,那么你也需要把RemotingDebugClasses类拖到舞台上然后删除。

4.在舞台上我们拖一个textinput组件取名为response_txt。

5.选择第一帧,然后开启动作面板。

6.首先我们要把导入类代码如下:

import mx.remoting.Service;
import mx.remoting.PendingCall;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;

导入之后我们就可以用相应的对象了。

7.之后首先我们要建立一个连接,代码如下:

var flashtestService:Service = new Service("http://localhost:8101/flashservices/gateway",
null, "com.helloworld.remoting.TestBean", null, null);

这里第一个参数比较固定,请看一下你的jrun管理控制台页面,你会看到你的flashremoting server的端口为8101(我的是8101如果你的不是那么你要改为相对应的端口号)注意后面的应该是flashservices,而不是你的server的名字,这个比较固定,第三个参数你看到了吧,这个就是指引flash找到你的java文件的路径,首先由于第一个参数,flash确定你调用的是flashremoting server,之后flash会指向SERVER-INF文件夹下的classes下,我们的java文件的存放的路径是com->helloworld->remoting下,所以,首先应该写com.helloworld.remoting,之后连接的就是java的文件名TestBean,所以这里的写法就是com.helloworld.remoting.TestBean,好了连接完成了。

8.然后我们就要创建一个PendingCall对象去调用java的方法代码如下:

var pc:PendingCall = flashtestService.getMessage();

这里请看一下java的代码,不错java里有一个getMessage方法,所以我们就要调用这个方法,来实现这个方法的功能了。

9.接下来是创建RelayResponder对象来设定从server里传回来的值指向flash的对应的方法,代码如下:

pc.responder = new RelayResponder(this, "getMessage_Result", "getMessage_Fault");

这里和.net的程序有点不一样,因为.net的程序设定传回值的方法可以随便写,但java默认的是和java端的方法名相同并且在其后面加一个_Result,或者_Fault,也就是getMessage_Result,和getMessage_Fault。

10.然后当然就是写这个两个方法了,呵呵,代码如下:

function getMessage_Result(re:ResultEvent):Void {
response_txt.text = re.result;
}
function getMessage_Fault(fe:FaultEvent):Void {
response_txt.text = "There was a problem"+fe.fault.faultstring;
}

这里,如果连接成功或者失败都把传回的值显示在response_txt里。

好了,代码完成了,是不是很简单,和.net的连接方式很类似呢,呵呵,还等什么,赶快测试吧,呵呵,如果出现这个问题error open url"http://localhost:8101/flashservices/gateway",那么你要注意了,看看你的防火墙,是不是禁止了flash连接了网络。如果是的话,那么赶快改回来吧(这个问题困饶我好久哦!!!),另一个问题就是我们现在编写的是java 的程序,所以你的环境变量一定要设定好,如果你确定你的jrun系统配置和java环境变量已经没问题了,那么除了上面我说的问题外,就应该没有什么问题了,good luck!!!

终于写完了,在这里还是多谢icastone大侠的支持,我会再接再厉的。下一篇是.net环境下的调用数据库,然后是java环境下的调用数据库,敬请关注。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息