趁空研究了下 flex4 + BlazeDS,做个笔录。
1、下载 blazeds 4
http://opensource.adobe.com/wiki/display/blazeds/download+blazeds+trunk
2、创建java project(web project)
-创建testapp类
package zj.services;
public class testapp {
public testapp() {
}
public String callHello(String name) {
return "hello,"+name;
}
}
-解压 blazeds.war 复制到项目根目录。
此时目录结构:
---src
---WEB-INF
----flex
----messaging-config.xml
----proxy-config.xml
----remoting-config.xml (需修改)
----services-config.xml
----version.properties
----lib
----src
----web.xml (需修改)
-修改web.xml文件
添加RDSDispatchServlet的声明和映射
<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>
-修改 web-inf/flex/remoting-config.xml文件
创建远程目标(启动Web服务的时候,BlazeDS将暴露Java类作为一个远程终端,将testrds作为id)
<destination id="testrds">
<properties>
<source>zj.services</source>
</properties>
</destination>
-部署项目至tomcat下
3、创建flex项目
-对java project(web project)右键--添加/更改项目类型--添加flex项目类型
-配置“应用程序服务器类型”为“j2ee”
-选择“使用远程对象访问服务”,选择“BlazeDS”
-服务器位置
根文件夹:选择刚部署的tomcat目录(x:\tomcat\webapps\项目名)
根URL:http://localhost:8080/项目名
上下文根目录:/项目名
点击“验证配置”,“finish”配置
-切换至flash试图(按习惯可做可不做)
为项目创建 flex 文件目录,将mxml文件放到此文件夹中,为和java文件区分,便于管理
-点击“连接数据/服务”
选择“BlazeDS服务器目标”,选择之前在remoting-config.xml配置中的远程终端id(testrds),点击完成。
-画一个按钮,对按钮右键,选择“生成服务调用”,选择java类方法。
-画一个文本标签
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function button_clickHandler(event:MouseEvent):void{
callHelloResult.token = testrds.callHello(_name.text);
}
]]>
</fx:Script>
<fx:Declarations>
<s:CallResponder id="callHelloResult"/>
<services:Testrds id="testrds" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
</fx:Declarations>
<s:TextInput id="_name"/>
<s:Label id="label2" text="{callHelloResult.lastResult}"/>
<s:Button id="button" click="button_clickHandler(event)"/>