1.在myeclipse的IDE下建立web project ,命名为:WorkerDemo;
2.将 路径下(D:/FrameWork/Flex-material/blazeds/WebRoot/WEB-INF)的除classes之外的四个文件完全复制到工程下的WEB- INFO下;
web.xml里面的内容头部保持MYECLIPSE生成的那样不变:
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
3.然后建立java类,里面写个方法:eg:
public class HelloWorker {
public String getWork(String work){
return work;
}
}
4.在WEB-INFO下打开flex下的remoting-config.xml,修改:
<destination id="hello"> //id可以自定义
<properties>
<source>HelloWorker</source> //此处的HelloWorker为:上面那个类的包路径,此处该类没在任何包下
</properties>
</destination>
5.发布该工程在tomcat,并启动服务;
6.在flex中新建flex project ,application type选择第一个web application ;application server type选择J2EE ,下一步:
root folder:D:/FrameWork/apache-tomcat-6.0.20/apache-tomcat-6.0.20/webapps/WorkerDemo //指定的是java中的工程在tomcat服务器中webapps下的路径;
root URL:http://localhost:8080/WorkerDemo //需要修改的是8080/后面的工程名字为需要使用的工程名;
context root: / 此处不做修改;
output folder:D:/FrameWork/apache-tomcat-6.0.20/apache-tomcat-6.0.20/webapps/WorkerDemo/WorkerDemo-debug //此处要修改的是去掉尾部的 -debug ,这是后台java编译时生成的格式,需要修改。修改后结果为:
output folder:D:/FrameWork/apache-tomcat-6.0.20/apache-tomcat-6.0.20/webapps/WorkerDemo/WorkerDemo
7.点击flex project名称此处为WorkerDemo右键选择最后一项properties ,选择flex compiler 右侧的flex SDK version 选择第二项use a specific SDK (flex 3.2)
mxml格式文件中相关配置:
<mx:RemoteObject id="ro" destination="hello"/> //此处的destination指定的是在java中remoting-config.xml(以上第四项)中指定的destination id="hello" ,
mxml 文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
public function remotingSayHello(event:Event):void{
var iname:String = txt_name.text;
ro.getWork(iname);
}
]]>
</mx:Script>
<mx:RemoteObject id="ro" destination="hello"/>
<mx:Form>
<mx:FormItem label="name:">
<mx:TextInput id="txt_name"/>
<mx:Button label="GO" click="remotingSayHello(event)"/>
</mx:FormItem>
</mx:Form>
<mx:TextInput id="show" fontSize="20" text="{ro.getWork.lastResult}"/>
</mx:Application>
以上代码中: ro.getWork(iname);的getWork指的是java端的方法;ro.getWork.lastResult 中的getWork也是方法名;
错误:[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost:8080/messagebroker/amf'"]
原因:点击flex project名称此处为WorkerDemo右键选择最后一项properties ,选择flex server右侧的context root 修改为:
/WorkerDemo 默认是只有一个斜杠;
错误:[RPC Fault faultString="Cannot invoke method 'helloWorld'." faultCode="Server.ResourceUnavailable" faultDetail="Method 'helloWorld' not found."]
原因:java端的方法可见范围定义的是private改成public即可。