分享

Flex与Java通信 BlazeDS方式 最详尽的解析

 青云中原第一馆 2016-12-09

Flex与Java通信(java查询数据库返回List,Flex调用java展示数据):http://blog.csdn.net/u010011052/article/details/9116871

Flex与java通信(java解析xml返回List,Flex调用java展示数据):http://blog.csdn.net/u010011052/article/details/9127643

 

这个例子较简单,但是包涵了很详细的配置和特别需要注意的一些地方:要稍复杂的看上面的两个例子

 

准备Blazed.war包,解压后会有两个文件夹:META-INFWEB-INF

这里主要用的是 WEB-INF flex文件夹里边的一些配置文件,如 remoting-config.xml

将 WEB-INF文件夹拷贝到你java项目下的WebRoot中替换原有的WEB-INF

 

1、新建 java 项目:

  将Blazed.war包中解压出来的 WEB-INF 拷贝到你项目路径下的WebRoot 下 替换原有的  WEB-INF

 

2、创建 java 类:

  1. package com.test;  
  2.   
  3. public class remotingtest {  
  4.     //创建一个java类 准备让Flex调用  
  5.     public String showVal() {  
  6.         return "1234567890";  
  7.     }  
  8. }  

 

3、打开 remoting-config.xml 文件配置 java 类:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <service id="remoting-service" class="flex.messaging.services.RemotingService">  
  3.   
  4.     <adapters>  
  5.         <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>  
  6.     </adapters>  
  7.   
  8.     <default-channels>  
  9.         <channel ref="my-amf"/>  
  10.     </default-channels>  
  11.   
  12.     <!-- 这里就是你要配置的java类 id是你自己取的名字 -->  
  13.     <destination id="REMOTINGTEST">    
  14.          <properties>    
  15.               <!-- 这里的 source 要配置的java类的路径(包名.类名)-->  
  16.               <source>com.test.remotingtest</source>  
  17.          </properties>    
  18.     </destination>   
  19. </service>  

 

4、配置 web.xml ,很多例子都没说配置这个,小心,有的时候自动生成的会出问题:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <web-app xmlns:javaee="http://java./xml/ns/javaee" xmlns:web="http://java./xml/ns/javaee/web-app_2_5.xsd">  
  4.     <!-- BlazeDs -->  
  5.     <listener>  
  6.         <listener-class>flex.messaging.HttpFlexSession</listener-class>  
  7.     </listener>  
  8.     <!--BlazeDS MessageBroker Servlet -->  
  9.     <servlet>  
  10.         <servlet-name>MessageBrokerServlet</servlet-name>  
  11.         <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>  
  12.         <init-param>  
  13.             <!-- 这里的配置注意下 value是你刚才拷贝过去的那个services-config.xml -->  
  14.             <param-name>services.configuration.file</param-name>  
  15.             <param-value>/WEB-INF/flex/services-config.xml</param-value>  
  16.        </init-param>  
  17.         <load-on-startup>1</load-on-startup>  
  18.     </servlet>  
  19.     <servlet-mapping>  
  20.         <servlet-name>MessageBrokerServlet</servlet-name>  
  21.         <url-pattern>/messagebroker/*</url-pattern>  
  22.     </servlet-mapping>  
  23.       
  24.   <welcome-file-list>  
  25.     <welcome-file>index.jsp</welcome-file>  
  26.   </welcome-file-list>  
  27. </web-app>  

其他的配置文件不用改,这时候用Tomcat部署java项目 并启动Tomcat

5、这时候去写创建个Flex项目测试一下:(下面比较重要)

进行这一步的前提:Tomcat部署项目成功

 

 

6、在Flex中创建并编写MXML应用程序:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
  3.                xmlns:s="library://ns.adobe.com/flex/spark"   
  4.                xmlns:mx="library://ns.adobe.com/flex/mx"   
  5.                initialize="init()"   
  6.                minWidth="955" minHeight="600">  
  7.     <fx:Script>  
  8.         <![CDATA[  
  9.             import mx.collections.ArrayCollection;  
  10.             import mx.events.FlexEvent;  
  11.             import mx.rpc.events.FaultEvent;  
  12.             import mx.rpc.events.ResultEvent;  
  13.               
  14.               
  15.             [Bindable]  
  16.             private function init():void {  
  17.                 // TODO Auto-generated method stub  
  18.                 remotingtest.showVal();  
  19.             }  
  20.                           
  21.             [Bindable]  
  22.             public var result:String="";  
  23.             protected function remotingtest_resultHandler(event:ResultEvent):void {  
  24.                 // TODO Auto-generated method stub  
  25.                 result = event.result as String;  
  26.             }  
  27.             [Bindable]  
  28.             protected function remotingtest_faultHandler(event:FaultEvent):void {  
  29.                 // TODO Auto-generated method stub  
  30.                 result = "这是 remotingtest_faultHandler 执行的";  
  31.             }  
  32.                
  33.               
  34.         ]]>  
  35.     </fx:Script>  
  36.     <fx:Declarations>  
  37.         <!-- 将非可视元素(例如服务、值对象)放在此处 -->  
  38.         <s:RemoteObject id="remotingtest" destination="REMOTINGTEST" result="remotingtest_resultHandler(event)" fault="remotingtest_faultHandler(event)" />  
  39.     </fx:Declarations>  
  40.     <!-- 用 Label 展示测试数据  -->  
  41.     <s:Label text="{result}" /></s:Application>  


7、好了,运行你的 mxml 文件,看看效果吧!祝你测试成功

 

以上文件打包了:下载地址:http://pan.baidu.com/disk/home?#dir/path=%2F%E5%88%86%E4%BA%AB%E6%96%87%E4%BB%B6
 

 有什么问题可以留下你的QQ交流


  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多