发表时间:2010-04-22
最后修改:2010-04-26
上一篇博文
中已经介绍了如何在同一项目中使用BlazeDS实现在同一项目中的Flex与Java通信,然而在很多的实际开发中可能需要将Java端与Flex端分放在两个不同的项目中,要实现此功能也非常简单,只需简单几步配置即可。
- 新建Flex工程。
- 点击“下一步”,“目标运行时”选择配置好的Tomcat,配置好BlazeDS的WAR文件,点击“Finish”。
- 工程上“右键”-> "Flex 服务器",“应用服务器类型”项选择“J2EE”,勾选“使用远程对象访问服务”,选择第二项“BlazeDS”。
- 配置“服务器位置”,“根文件夹”:%workspace_path%\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\%project_name%; "根URL":http://localhost:8080/%project_name%; "上下文根目录":/%project_name%。
- 点击“验证配置”,出现“Web根文件夹与根URL有效”的信息时,表明已经验证成功,点击“OK”。
- 在Flex工程的默认生成的“工程名.mxml”文件中粘入如下代码
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:mx="http://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fx="http://ns.adobe.com/mxml/2009">
<fx:Declarations>
<s:RemoteObject id="ro" destination="Hello" result="resultHandler(event)"/>
</fx:Declarations>
<fx:Script >
<![CDATA[ import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable]
private var helloResult:String;
private function sayHello():void {
ro.sayHello(inputText.text);
}
private function resultHandler(event:ResultEvent):void {
helloResult = event.result as String;
}
]]>
</fx:Script >
<s:HGroup>
<s:Label text="Name:" id="nameLabel"/>
<s:TextInput id="inputText"/>
<s:Button label="say Hello" id="nameButton" click="sayHello()"/>
<s:Label id="resultLabel" text="{helloResult}"/>
</s:HGroup>
</s:Application>
- 将java工程部署到服务器中启动服务器,右键点击Flex工程中的“工程名.mxml”,“run as”->“web 应用程序”,测试成功。
- 在步骤7运行过程中可能会出现类似“[RPC Fault faultString="发送失败" faultCode="Client.Error.MessageSend".......”的错误可以参考 http://bbs.airia.cn/Flash_Builder_4/thread-11228-1-1.html
的方法进行解决。也可以在mxml中的RemoteObject对象定义时加上
endpoint="messagebroker/amf"
属性。