關於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內容修改爲如下所示:
<?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的內容修改爲如下所示:
<?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中輸入以下代碼:
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中的內容修改如下:
<?
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服務器的返回結果,如下圖所示: