### 基于Flex三种通讯方式的Java配置与整合
#### 概述
在软件开发领域,特别是Web应用开发中,不同技术栈之间的交互是非常重要的环节。本文将围绕Flex技术与Java Web项目的集成展开,主要介绍如何通过三种不同的通信方式(AMF、Service和WebService)实现Java后端与Flex前端的有效沟通。
#### Flex与Java通讯方式概述
Flex是Adobe公司推出的一种用于构建和部署富互联网应用程序(RIA)的技术。为了使Flex前端能够与Java后端进行有效通信,通常采用以下三种通信方式:
1. **AMF (Action Message Format)**
- AMF是一种二进制数据交换格式,用于客户端与服务器之间高效地传输数据。Flex默认支持AMF协议。
2. **Service**
- 在Flex中,除了AMF外,还可以通过HTTP服务的方式与后端进行交互,这种方式更灵活,但可能不如AMF高效。
3. **WebService**
- WebService是一种标准的跨语言、跨平台的服务提供方式,适用于不同技术栈之间的交互。
#### LCDS与BlazeDS的区别
- **LCDS (LiveCycle Data Services)**
- Adobe LiveCycle Data Services ES是一款商业级的产品,它提供了完整的Flex与后端交互解决方案,包括消息传递、数据同步等功能。
- **BlazeDS**
- BlazeDS是LCDS的一个开源版本,可以满足大多数项目的通信需求,功能上相比LCDS有所简化。
根据Adobe官方提供的对比资料,BlazeDS作为LCDS的一个子集,足以满足大多数项目的通信需求,并且具有开源的优势,因此在实际项目中被广泛采用。
#### 技术选型与环境搭建
- **开发工具**: MyEclipse 10.7.1
- **JDK版本**: 1.6.0.45
- **框架选择**:
- Web层: Spring-Flex 1.0.3 (AMF)、Struts 2.3.15.1 (Service)、CXF 2.7.6 (WebService)
- Service层: Spring 3.1
- DAO层: Hibernate 3.3
#### 下载所需库文件
1. **Spring-Flex 1.0.3 (AMF)**: 可以从[Springsource](http://springsource.org/download/community)下载。
2. **BlazeDS (AMF)**: 需要登录Adobe官网并下载最新版本的BlazeDS,例如[adobeblazeds-bin-4.0.0.14931.zip](https://www.adobe.com/cfusion/entitlement/index.cfm?e=lc_blazeds)。
3. **Backport-Util-Concurrent 3.1 (AMF)**: 该库用于提供线程并发支持,可以从[SourceForge](https://sourceforge.net/projects/backport-jsr166/files/backport-jsr166/3.1/)下载。
4. **Struts 2.3.15.1 (Service)**: 从[Apache Struts官网](https://struts.apache.org/download.cgi#struts2315)获取。
5. **CXF 2.7.6 (WebService)**: 从[CXF官网](https://cxf.apache.org/download.html)下载。
#### 配置方案与实践
- **创建Java Web项目**:
- 使用MyEclipse创建一个新的Java Web项目。
- **增加Spring支持**:
- 通过MyEclipse自带的功能添加Spring支持。
- **增加Hibernate支持**:
- 同样利用MyEclipse的功能添加Hibernate支持。
- **配置数据库连接**:
- 在项目中配置数据库连接信息,确保可以与数据库正确通信。
- **整合Spring与Hibernate**:
- 修改项目的`web.xml`文件,添加Spring和Hibernate的相关配置,确保项目可以正确加载Spring配置文件及启用Hibernate过滤器。
```xml
<!--springconfiguration-->
<listener>
<display-name>spring</display-name>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--hibernateconfiguration-->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
```
#### 总结
通过上述步骤,我们已经完成了基于Flex三种通讯方式的Java配置与整合的基本流程。这种配置不仅可以提高项目的灵活性,还能增强系统的可维护性和扩展性。在实际项目开发中,开发者可以根据项目需求选择最合适的通信方式,以实现最优的性能和用户体验。