1.
一个简单的Flex+Spring开发环境需要很多环境上的配置,但是,这些配置基本上都是一次性的,也就是说,您这次配置成功了,下次还可以使用相同的配置。您可以将需要的jar包放在一个单独的目录中,当下次使用时直接拷贝过去即可。
1.1.Java 使用javaEE版本,JDK+javaEEBundle。即java platform,Enterprise Edition 6 SDK Update1(with JDK 6 U22),下载地址www.oracle.com/technetwork/java/javase/downloads/index.html(注意要选择javaEE那个版本的),下载后直接安装即可。
1.2.Eclipse 使用的是Eclipse IDE forjavaEE Developers,可以从官方网站www.eclipse.org/downloads/上下载(要注意下载的是javaEE版本的),下载后直接安装即可。
1.3.FlexBuilder4使用的是Adobe FlashBuilder4 ,下载地址:www.adobe.com/products/flashbuilder下载单独版本的,(不是Eclipse插件类型),下载后直接安装即可。
1.4.Tomcat 7.0 可以从http://tomcat.apache.org/download-70.cgi上下载到这个版本。
1.5.Spring3.0 下载 Spring Framework3.0.5.RELEASE版本即可。下载地址:www.springsource.org/download.下载后是个压缩包,里面有很多jar包。spring-framework-3.0.3.RELEASE-with-docs.zip,在flex+Spring工程中会使用其中一部分jar包。
1.6.BlazeDS 负责flex前台和Spring后台间的通信,下载地址:http://opensource.adobe.com/wiki/display/blazeds/BlazeDS,下载:blazeds-turnkey-4.0.0.14931.zip这个版本。Zip中包含了BlazeDS需要的jar包,在flex+Spring工程中会使用其中的一部分jar包。
1.7.与日志相关的常规jar包:commons-logging-1.1.1.jar,log4j-1.2.16.jar,slf4j-log4j12-1.5.8.jar,这些jar包可以直接到Google中,输入相应的jar包进行下载。
1.8.运行环境需要的jar包:aopalliance.jar(这个是aop联盟规定的标准,Spring中需要使用),asm-3.3.jar(汇编语言需要的包,Spring等将代码自己编译成汇编),cglib.jar(是一个运行时的编译库,可将java代理等内容直接编译成二进制),backport-util-concurrent-2.2.jar(工具箱jar)
上述的配置基本上就可以完成需要的Spring+flex了。
最后,tomcat7.0运行时还需要一个优化文件,tcnative-1.dll,这个文件需要根据你不同的主机选择不同的文件,一般使用tcnative-1.dll 1.1.17版本,然后选择不同的系统版本,下载后放入System32文件夹中。
当上面所有的内容都下载安装完成后,就可以开始设计我们的第一个Flex+Spring的程序了。
2.
下面对Eclipse的开发环境进行配置,主要包括jdk的映射,tomcat的映射,以及新的web项目的创建。
2.1.Java环境的配置
在Eclipse中的,Window->Preferences->Java->InstalledJREs 中,选择Add添加一个JDK,新添加的jdk最好是上述安装过的javaEE的jdk(注意,就是1.1中提到的安装目录中的那个jdk,根据自己的情况选择)
2.2.Tomcat环境的配置
在Eclipse中,window->Preferences->Server->RuntimeEnvironments 选项卡中,选择Add->选择Apache Tomcat V7.0 ,将上述的1.4中提到的tomcat7.0的目录指定为Runtime Environment。
2.3.创建一个Server工程。
在Eclipse中,选择file->new->other->Server->Server选择服务为tomcat7.0。点finished。这时在project Explorer中出现Servers项目。这个项目的作用是,当web服务执行run on server后,该项目会自动在这个Servers项目中配置发布。
2.4.创建一个动态的Web工程
在Eclipse中,选择file->new->other->Web->DynamicWeb Project创建一个Web工程。Project Name叫:MyFirstFlexSpringService
这时在ProjectExplorer中会出现MyFirstFlexSpringService
2.5.选择构建Spring服务端需要的jar包
2.5.1.
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
2.5.2.
1)
2)
3)
4)
5)
6)
2.5.3.
1)
2)
3)
2.5.4.
1)
2)
3)
4)
2.5.5.
org.springframework.flex-1.0.3.RELEASE
将以上描述的所有jar包放入MyFirstFlexSpringService
有关jar包的筛选是个很有学问的问题,在使用过程中,应该保证尽量添加那些使用到的jar包,不要添加多余的jar包。这个过程可以根据自己对相应架构的理解、日常经验以及不断的测试进行筛选。
3.
3.1.web.xml的配置
web.xml是tomcat创建web应用所需的配置信息文件。通过对web.xml进行配置,tomcat指定要将投递过来的请求交给Spring的Dispatch进行下一步分发。配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
</web-app>
简单解释:web.xml中配置了Spring的Dispatch,在tomcat启动时会根据web.xml中描述的Spring 的Dispatch创建Spring的上下文,而且在默认情况下,tomcat会寻找与web.xml在同一目录下的,以Spring Dispatch名字为前缀,以-servlet.xml为后缀的Spring的配置文件。而RDS仅是在flex客户端开发过程中使用,在真正的程序运行时没什么用途(如果你需要为别人提供远程编程接口的支持,你需要提供rds的配置),flex客户端可以通过rds获取服务的可用外部调用和对象。
最后,web.xml要放在WEB-INF目录下。
3.2.Spring环境的配置文件
根据3.1中的解释,需要在WEB-INF目录下创建Spring的配置文件,名字叫spring-servlet.xml,这个文件主要保证了提交来的请求再次转交给哪个类进行处理。配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
</beans>
简单的解释:Spring启动时会扫描指定的包,并创建相应的类的对象。Spring还会创建一个messageBroker,并将接受到的flex相关的请求都提交给这个MessageBroker进行处理。在默认情况下,flex的配置文件会放在Spring配置文件相同目录下的一个名字叫flex的文件夹下,并且主配置文件名字为services-config.xml。
3.3.
与flex相关的配置文件有四个,分别是services-config.xml、remoting-config.xml、proxy-config.xml和messaging-config.xml。一般情况下都会使用service-config.xml和remoting-config.xml。
下面给出service-config.xml的配置信息
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
</services-config>
简单解释,service-config.xml是flex的主配置文件,在这个文件中可以引入其他配置文件。在这个文件中定义了通信需要的通道(amf:Action messageformat)简单的说amf就是一种压缩格式,通过endpoint指定通道,并解压缩。
下面看看remoting-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义服务,并设置参数 -->
<service id="remoting-service"
</service>
简单解释:这里定义了flex的服务,并指明要将请求转换成java对象,并使用默认的通道。
3.4.总结整个流程
Flex客户端在编写代码的时候需要获取服务端可使用的接口,这些接口是RDS在服务端运行时提供的(如果您想为您的客户提供更加灵活的使用方式,向外部提供编程接口,RDS是个不错的选择),RDS在web.xml文件中进行配置。当整个服务搭建完成后,flex客户端向服务器提交请求时,先将请求以amf的格式进行压缩通信,并指定通信的地址是/amf,这样tomcat接受到这个请求,发现请求要提交给Spring的Dispatch来处理(Spring的Dispatch要在web.xml中进行配置),于是提交给Spring进行处理,Spring根据配置文档中描述的messageBroker,将请求提交给服务端默认的通道(amf,MessageBroker在Spring的配置文档中配置),消息提交给默认的通道(amf通道在service-config.xml中定义),通道对内容解压,并与具体的java类进行映射(通过Adapter,Adapter在remoting-config.xml中定义)。这样就完成了Flex的请求转换成具体类对象的请求了。
整个文档结构
1.
下面定义一个简单的服务,就是接收一个用户的名字,然后反馈欢迎信息。
package com.guan.myFirstFlexSpringService
import org.springframework.flex.remoting.RemotingDestination;
import org.springframework.flex.remoting.RemotingInclude;
import org.springframework.stereotype.Service;
@Service
@RemotingDestination
public class SpringService {
}
代码很简单,不过需要用flex的一些标记,这样Adapter知道需要将请求转换成哪些类的对象,并调用哪些方法。