原作:lwanchen
现在我们来学习一下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环境下的调用数据库,然后就完了,呵呵,因为我会的实在是太少了,呵呵
11.下面是废话,如有问题请与我联系,我的qq:22339146,我的msn:lwanchen@hotmail.com。