Flex與Java通信 BlazeDS方式 最詳盡的解析

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 類:

package com.test;

public class remotingtest {
	//創建一個java類 準備讓Flex調用
	public String showVal() {
		return "1234567890";
	}
}

 

3、打開 remoting-config.xml 文件配置 java 類:

<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" class="flex.messaging.services.RemotingService">

    <adapters>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
    </adapters>

    <default-channels>
        <channel ref="my-amf"/>
    </default-channels>

    <!-- 這裏就是你要配置的java類 id是你自己取的名字 -->
    <destination id="REMOTINGTEST">  
         <properties>  
              <!-- 這裏的 source 要配置的java類的路徑(包名.類名)-->
              <source>com.test.remotingtest</source>
         </properties>  
    </destination> 
</service>

 

4、配置 web.xml ,很多例子都沒說配置這個,小心,有的時候自動生成的會出問題:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!-- BlazeDs -->
    <listener>
        <listener-class>flex.messaging.HttpFlexSession</listener-class>
    </listener>
  	<!--BlazeDS MessageBroker Servlet -->
    <servlet>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
        <init-param>
            <!-- 這裏的配置注意下 value是你剛纔拷貝過去的那個services-config.xml -->
            <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>
  	<servlet-mapping>
        <servlet-name>MessageBrokerServlet</servlet-name>
        <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>
    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

其他的配置文件不用改,這時候用Tomcat部署java項目 並啓動Tomcat

5、這時候去寫創建個Flex項目測試一下:(下面比較重要)

進行這一步的前提:Tomcat部署項目成功

 

 

6、在Flex中創建並編寫MXML應用程序:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   initialize="init()" 
			   minWidth="955" minHeight="600">
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.events.FlexEvent;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			
			
			[Bindable]
			private function init():void {
				// TODO Auto-generated method stub
				remotingtest.showVal();
			}
						
			[Bindable]
			public var result:String="";
			protected function remotingtest_resultHandler(event:ResultEvent):void {
				// TODO Auto-generated method stub
				result = event.result as String;
			}
			[Bindable]
			protected function remotingtest_faultHandler(event:FaultEvent):void {
				// TODO Auto-generated method stub
				result = "這是 remotingtest_faultHandler 執行的";
			}
			 
			
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- 將非可視元素(例如服務、值對象)放在此處 -->
		<s:RemoteObject id="remotingtest" destination="REMOTINGTEST" result="remotingtest_resultHandler(event)" fault="remotingtest_faultHandler(event)" />
	</fx:Declarations>
	<!-- 用 Label 展示測試數據  -->
	<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交流


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章