论坛首页 编程语言技术论坛

用BlazeDS实现Flex与Java通信之separated projects

浏览 2769 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-04-22   最后修改:2010-04-26

上一篇博文 中已经介绍了如何在同一项目中使用BlazeDS实现在同一项目中的Flex与Java通信,然而在很多的实际开发中可能需要将Java端与Flex端分放在两个不同的项目中,要实现此功能也非常简单,只需简单几步配置即可。

  1. 新建Flex工程。
  2. 点击“下一步”,“目标运行时”选择配置好的Tomcat,配置好BlazeDS的WAR文件,点击“Finish”。
  3. 工程上“右键”-> "Flex 服务器",“应用服务器类型”项选择“J2EE”,勾选“使用远程对象访问服务”,选择第二项“BlazeDS”。
  4. 配置“服务器位置”,“根文件夹”:%workspace_path%\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\%project_name%; "根URL":http://localhost:8080/%project_name%; "上下文根目录":/%project_name%。
  5. 点击“验证配置”,出现“Web根文件夹与根URL有效”的信息时,表明已经验证成功,点击“OK”。
  6. 在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>
    
     
  7. 将java工程部署到服务器中启动服务器,右键点击Flex工程中的“工程名.mxml”,“run as”->“web 应用程序”,测试成功。
  8. 在步骤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"
     属性。
    论坛首页 编程语言技术版

    跳转论坛:
    Global site tag (gtag.js) - Google Analytics