Flex应用使用BlazeDS与Java应用通信

blazeDS是Adobe公司为FLex与JavaEE通信推出的技术,在FLex与JavaEE通信时起到一个数据中间层的作用,与其相似的还有LiveCycle Data Service技术,但此技术需要付费使用,对于常规学习开发,blazeDS足以。
一、blzeDS下载地址
    http://opensource.adobe.com/wiki/display/blazeds/BlazeDS
二、创建基于blazeDS的项目:
    (我的环境jdk1.5+eclipse3.6+flexBuilder3+tomcat6.0)
    1、建立一个web项目blazeTest。
    2、解压下载blaze bin包中的blaze.war(不能直接解压时可以将其放入tomcat中启动让tomcat解开此包)。
    3、用解压后blazeds文件夹中WEB-INF下得web.xml替换web项目中的web.xml(对于已有的web项目可以将其中的内容复制进去)。
    4、将blazeds文件夹下的flex和lib文件夹copy到web项目的WEB-INF目录下,其中flex文件夹下是flex与java应用不同通信方式的配置文件,lib是必要的包;也可以修改这些配置文件的位置,但是注意在web.xml中也要修改相应servlet初始化时配置文件路径,见代码:
<servlet>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <display-name>MessageBrokerServlet</display-name>
        <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
        <init-param>
            <param-name>services.configuration.file</param-name>
            <param-value>/WEB-INF/flex/services-config.xml</param-value>    </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    5、建立一个java测试类:
package com.test;

public class Test {

    public String test() {
         return "balzeDS say congratulation to you";
    }
}
      
    6、配置flex目录下的remoting-config.xml文件
<destination id="Test">
       <properties>
           <source>com.test.Test</source>
       </properties>
    </destination>

    7、服务器端搞定,发布项目等着Flex项目的访问。
Flex项目:
     1、建立felx项目,application server type中选择J2EE,next,root folder选择web项目的根目录(WebRoot或WebContent),这样编译之后的文件可以自动更新到项目中。
     2、编写测试代码:
    
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script >      
<![CDATA[ 
	import mx.rpc.events.FaultEvent;    
   	import mx.rpc.events.ResultEvent;  
   	import mx.controls.Alert;    
      private var result:String;     
      private function test():void {    
        ro.test();    
        }    
        
       private function resultHandler(event:ResultEvent):void {    
          result = event.result as String;  
          Alert.show(result);  
       } 
       
   ]]>   
</mx:Script >
<mx:RemoteObject id="ro" destination="Test" result="resultHandler(event)"/>
 <mx:Button label="test" id="btn" click="test()" x="201" y="10"/>
</mx:Application> 

此时需要刷新服务器端,让tomcat加载编译后的swf文件即包装页面。
在FLex中点击运行按钮即可访问包装页面。
点击Button测试,弹出服务器返回字符串说明成功。


常见问题:
      1、如果Flex项目没有设置为自动编译,每次更改后需要手动编译,自动编译在project菜单下的第一项。
      2、修改编译之后需要在JavaEE项目中刷新一下,这样tomcat才会重新发布,否则看不到修改后的变化。
      3、确定代码中没有错,但是problems中仍有错误时,用project下的clean命令清理即可。









你可能感兴趣的:(java,Web,Flex)