LCDS(LiveCycle Data Service)是由FDS(Flex Data Service)发展而来,通过LCDS与服务器端通信不但可以大大提高通信的效率,而且还能提供传统B/S结构没有的功能。由于目前LCDS只能通过war包的形式提供给服务端,所以LCDS只能提供给J2EE的服务端。
LCDS是Adobe公司提供的一种收费的技术产品,免费版本只能支持单CPU,如果多CPU服务器上运行LCDS,就要向Adobe支付昂贵的费用。我在《整合Flex和Java--配置篇》介绍过的BlazeDS是Adobe公司推出的LCDS的简化版本,并且是免费的、开源的,可以让我们有了更多的选择。
Flex结合使用LCDS有两种编译方式,即本地编译和服务器编译。本地编译是FLEX最常用的编译方式,即在本地将编译好的文件发布。而服务器编译,就是不需要在本地预编译,在用户请求时进行编译。下面介绍的小例子就是使用服务器编译。
因为LCDS不是Flex SDK提供的,需要去Adobe官方网站上去下载。下载地址:http://www.adobe.com/products/livecycle
下载LCDS后,直接安装即可。
准备就绪后,我们就要开始编写基于LCDS的例子了。
1、 新建Flex Project
2、 配置J2EE运行环境和LCDS路径
选择lcds的安装路径 |
LCDS有两种编译方式,如图,第一种是本地编译,第二种为服务器编译。服务器编译是LCDS给我们提供的一种非常方便而有强大的功能,所以我们选择第二种 |
3、 点击Finish,让我们看看它的工程目录于BlazeDS有什么不同。
我们明显的看到,LCDS的工程目录要比BlazeDS精简的多吧。因为我们采用的是服务器编译,所以LCDS并没有给flex提供源文件夹和编译输出的目录,而是直接将mxml文件放在WebRoot根目录下。但是由于LCDS比BlazeDS提供更多功能,所以配置文件要比BlazeDS更加的丰富,而且都是由系统自动给我们添加好了,省去了像BlazeDS那样的手工配置。
LCDS下的工程目录
Flex编译后发布的文件。我们发布在根目录下 |
自动生成的flex的配置文件 |
Java源文件夹 |
Flex文件的源文件夹 |
|
BlazeDS的工程目录
4、 我们先写一段简单的flex代码,来看看效果
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Style>
global{
fontSize:12pt
}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function showMessage():void{
Alert.show('我是一个基于LCDS的Flex应用','Web应用');
}
]]>
</mx:Script>
<mx:Button label="点击" verticalCenter="0" horizontalCenter="0" click="showMessage()">
</mx:Button>
</mx:Application>
这段程序非常的简单,我们主要是来看看它的服务器编译。
5、 按照《整合Flex和Java--配置篇》中介绍的方式,将这个工程发布到tomcat下,然后启动tomcat。
6、 在本地编译的方式下,我们需要手工编译mxml文件成html和swf,而现在我们只需要直接用.mxml的路径来访问看看效果。http://localhost:8080/FirstLCDS/FirstLCDS.mxml
直接访问,服务器会给我们自动编译出swf文件,可以去你的tomcat下去察看。
点击按钮,出现如下效果,和我们传统的方式是一样的效果,而且这种方式更加的直接,更加的方便。
7、 LCDS的强大功能不只是表现这个方面,而是它与java的直接交互。还是以《整合Flex和Java--配置篇》中的例子为例。其过程和BlazeDS是一样的。
新建一个java类:Hello.java
package com;
public class Hello {
public String HelloLCDSRemoting(String name){
return "Hello"+name+"LCDS";
}
}
我们需要对这个java类进行配置,打开remoting-config.xml,添加如下代码:
<destination id="HelloRemoting">
<properties>
<source>com.Hello</source>
</properties>
</destination>
8、 开始编写一个flex页面来调用这个java类。建立一个LCDSHello.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.rpc.events.FaultEvent;
import mx.rpc.remoting.RemoteObject;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;