关于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服务器的返回结果,如下图所示: