Flex與Java之間的AMF通信-BlazeDS框架的使用

關於Flex與後臺之間的通信,我想大家已經瞭解很多了,關於BlazeDS框架的使用,介紹還很少,並且還很不全面,今天我們一起來研究一下如何使用BlazeDS框架讓Flex與Java進行通信。

1.0.下載BlazeDS框架,下載集成Tomcat服務器的版本http://flexorg.wip3.adobe.com/blazeds/4.x/milestone/14931/blazeds-turnkey-4.0.0.14931.zip 或者單獨的版本http://flexorg.wip3.adobe.com/blazeds/4.x/milestone/14931/blazeds-bin-4.0.0.14931.zip 。如果你不熟悉Tomcat服務器,建議下載集成版的,下面我也是以此集成版爲例進行說明。(更多版本下載請訪問:http://opensource.adobe.com/wiki/display/blazeds/download+blazeds+4

1.1.將下載的BlazeDS框架解壓到本地磁盤,我是解壓到C:/blazeds4.0.0.14931目錄下。

1.2.進入C:/blazeds4.0.0.14931/sampledb目錄下,雙擊startdb.bat文件啓動之。

1.3.進入C:/blazeds4.0.0.14931/tomcat/bin目錄下,雙擊startup.bat文件啓動之。(此步可能會報 錯,主要原因是你的JAVA_HOME或者JRE_HOME環境變量未設置,關於環境變量的設置,如果你不會,請用Baidu或者Google搜索一下)

1.4.如果沒問題的話,打開瀏覽器,在地址欄中輸入http://localhost:8400,回車,如果出現以下界面,說明你的BlazeDS已經成功運行了。

2.0.打開jee eclipse開發環境,如果沒有,可到http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR2/eclipse-jee-galileo-SR2-win32.zip 下載。

2.1.將workspace切換到C:/blazeds4.0.0.14931/tomcat/webapps。

2.2.到C:/blazeds4.0.0.14931/tomcat/webapps目錄下,將blazeds文件夾複製一個副本,將此副本改名爲myapp。

2.3.回到jee環境中,新建一個Dynamic Web Project,如下圖所示:

2.4.單擊“Next”,進入如下面板,將Project name命爲myappp:

2.5.單擊“Next”進入如下面板,這裏我們將修改Source folders on build path爲WEB-INF/src,修改Default output folder爲WEB-INF/classes,如下圖所示:

2.6.單擊”Next”進入如下面板,我們修改Content directory爲WEB-INF,如下圖所示:

2.7.單擊“Finish”創建我們的工程。

2.8.將web.xml內容修改爲如下所示:

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


 
<web-app id ="WebApp_ID" >
 
<display-name> myapp</display-name>
<description> BlazeDS Application</description>
 
<!-- Http Flex Session attribute and binding listener support -->
<listener>
<listener-class> flex.messaging.HttpFlexSession</listener-class>
</listener>
 
<!-- MessageBroker 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>
 
<servlet>
<servlet-name> RDSDispatchServlet</servlet-name>
<display-name> RDSDispatchServlet</display-name>
<servlet-class> flex.rds.server.servlet.FrontEndServlet</servlet-class>
<init-param>
<param-name> useAppserverSecurity</param-name>
<param-value> false</param-value>
</init-param>
<load-on-startup> 10</load-on-startup>
</servlet>
 
<servlet-mapping id ="RDS_DISPATCH_MAPPING" >
<servlet-name> RDSDispatchServlet</servlet-name>
<url-pattern> /CFIDE/main/ide.cfm</url-pattern>
</servlet-mapping>
 
<servlet-mapping>
<servlet-name> MessageBrokerServlet</servlet-name>
<url-pattern> /messagebroker/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file> index.html</welcome-file>
<welcome-file> index.htm</welcome-file>
<welcome-file> index.jsp</welcome-file>
<welcome-file> default.html</welcome-file>
<welcome-file> default.htm</welcome-file>
<welcome-file> default.jsp</welcome-file>
</welcome-file-list>
 
<!-- for WebSphere deployment, please uncomment -->
<!--
<resource-ref>
<description>Flex Messaging WorkManager</description>
<res-ref-name>wm/MessagingWorkManager</res-ref-name>
<res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
-->
 
</web-app>

2.9.將remoting-config.xml的內容修改爲如下所示:

Code block      
<?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>
 
<destination id ="hello" >
<properties>
<source> com.plter.Hello</source>
</properties>
</destination>
</service>

2.10.建立com.plter.Hello類,如下圖所示:

2.11.在Hello.java中輸入以下代碼:

Code block      
package
 com.plter
;

 
public class Hello {
public String helloClient( String name) {
return "Hello " + name;
}
}

2.12.重新啓動Tomcat服務器,請參考1.2和1.3。

3.0.打開FlashBuilder4,創建一個名爲HelloServer的Web工程,服務器技術選擇J2ee的BlazeDS,如下圖所示:

3.1.單擊“下一步”進入配置服務器面板,在根文件夾中輸入C:/blazeds4.0.0.14931/tomcat/webapps /myapp,在根URL中輸入http://localhost:8400/myapp,上下文根目錄中輸入myapp,如下圖所示:

3.2.單擊完成創建Flex項目。

3.3.選擇菜單 “數據”->“連接BlazeDS…”將打開身份驗證面板,我們選擇不需要密碼,如下圖所示:

3.4.單擊“確定”將進入導入服務面板,我們選擇hello,如下圖所示:

3.5.單擊“完成”創建此服務。

3.6.回到HelloServer.mxml文件的設計面板中,將一個按鈕拖入,並在此按鈕的屬性面板中的事件選擇裏選擇生成服務調用,如下圖所示:

3.7.在生成服務調用的面板中,我們選擇hello的helloClient方法,如下圖所示:

3.8.單擊“確定”則可自動回到“源代碼”面板中,此時我們將HelloServer.mxml中的內容修改如下:

Code block      
<?
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" xmlns: services="services.*" >
< fx: Script>
<! [ CDATA[
import mx. controls. Alert;
import mx. rpc. events. ResultEvent;
 
protected function button_clickHandler( event: MouseEvent ) : void
{
helloClientResult. token = hello. helloClient( "Jaja" ) ;
}
 
protected function helloClientResult_resultHandler( event: ResultEvent) : void
{
trace ( event. result) ;
}
 
] ] >
</ fx: Script>
< fx: Declarations>
< s: CallResponder id="helloClientResult" result="helloClientResult_resultHandler(event)" />
< services: Hello id="hello" fault="Alert.show(event.fault.faultString + '/n ' + event.fault.faultDetail)" showBusyCursor="true" />
<!-- 將非可視元素(例如服務、值對象)放在此處 -->
</ fx: Declarations>
< s: Button x ="79" y ="98" label="按鈕" id="button" click ="button_clickHandler(event)" />
</ s: Application>

3.9.按F11調試此程序,單擊一下按鈕,如果成功,將會在輸出面板中呈現Java服務器的返回結果,如下圖所示:

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