FLEX与JAVA端的通信有多种形式,在这里我将介绍如何更快的搭建基于BlazeDS的项目
首先我们假设你已经安装了FLEX和MyEclipse,以及具备了BlazeDS并且已经解压。
首先我们在MyEclipse新建web项目,然后将下列文件对好入座。
1. 用blazeds\META-INF 下的MANIFEST.MF文件覆盖项目中的MANIFEST.MF文件
2.将blazeds\WEB-INF\classes下的commons-logging.properties放到项目中的WEB-INF\classes目录下,项目中看不见,直接放到文件目录里即可。
3. 拷贝 blazeds\WEB-INF下的FLEX目录到项目 中 WEB-INF目录下
4. 拷贝 blazeds\WEB-INF\lib下所有的jar包到 项目中 WEB-INF\lib下
5. 将blazeds\WEB-INF下的web.xm中如下的内容拷贝到项目中的web.xml文件中
<display-name>BlazeDS</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>
<display-name>MessageBrokerServlet</display-name>
<servlet-name>MessageBrokerServlet</servlet-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-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
在J2EE项目中新增类如下
package test;
public class Hello {
public String sayHelloToFlex(String str){
System.out.println("欢迎"+str);
return "欢迎"+str;
}
}
在remoting-config.xml中增加配置文件如下
<destination id="hello">
<properties>
<source>test.Hello</source>
</properties>
</destination>
为J2EE项目配置服务器,我使用的是tomcat,部署项目
OK,至此J2EE端操作完毕
接下来是FLEX端
在FLEX端新建项目demo,新建过程见下面图文描述:
1.
点击NEXT进入下一步
2.
选择Root folder ---项目部署到服务器中的应用路径
Root URL :项目根目录访问URL
Context Root :应用名称
Output folder:FLEX项目编译后文件输出目录
这些都配置完后点击 validate configuration按钮,如果在顶部出现通过的标示(如图)则可以进行到下一步继续。如果提示失败,则检查应用路径设置是否正确,以及Root URL设置是否正确,还有一点需要注意的是我们需要保持J2EE端的服务器为启动状态。
点击NEXT进入下一步
3
点击Finish完成项目创建
在主MXML文件中编辑代码如下
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.remoting.mxml.RemoteObject;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
public function submit():void{
var remote:RemoteObject = new RemoteObject();
//调用在J2EE端remoting-config.xml中配置的暴露出的类的名称
remote.destination = "hello";
//调用J2EE端累中的方法
remote.sayHelloToFlex("FLEX");
//监听调用成功时间。。。。失败事件在这里省略
remote.addEventListener(ResultEvent.RESULT,result);
}
private function result(evt:ResultEvent):void{
Alert.show(evt.result.toString());
}
]]>
</mx:Script>
<mx:Button click="submit()" label="hello" horizontalCenter="0" verticalCenter="0"/>
</mx:Application>
运行FLEX端代码,结果如下