服务端FlexClient、MessageClient、FlexSession类的实例代表了Flex应用和服务端的连接。你可以使用这些对象管理FLEX应用程序和服务端的同步。
FlexClient, MessageClient, and FlexSession objects
FlexClient
每一个MXML或者AS的Flex应用都被编译进SWF文件。当SWF文件和Blazeds服务通信的时候,一个flex.message.client.FlexClient对象就被创建,并在服务端代表这个SWF文件。SWF文件和FlexClient实例具有一对一的映射关系。Blazeds服务端为每个FlexClient实例生成一个唯一的标识id。在客户端也有一个单例类mx.message.FlexClient,用于存储这个唯一的FlexClient Id。
MessageClient
如果某个Flex应用程序含有一个订阅组件(flex.message.Consumer),服务端就会创建一个相应的flex.messaging.MessageClient实例来代表这个订阅者的发布者。每个MessageClient都有一个唯一的clientId,可以自动由Blazeds服务端生成,也可以在调用Consumer.subscribe()方法之前指定这个Consumer.clientId属性。
FlexSession
FlexSession对象代表在Flex程序和Blazeds服务之间的连接。它的生命周期基于通道和端点使用的底层协议。如果是基于HTTP的通道,例如AMFChannel或者HTTPChannel,在Blazeds服务端就是浏览器范围。如果它连接的端点是一个基于servlet的端点,那么这个HTTP session是基于J2EE HttpSession 对象。
三者之间的关系
一个FlexObject对象可以拥有多个FlexSession实例,这取决于Flex应用使用的通道数。例如,一个程序使用了一个HTTPChannel,那么在Blazeds服务端一个FlexSession代表这个HTTP session就会被创建。
一个FlexSession也可以拥有一个或多个FlexClient和它关联。例如,a SWF file that uses an
HTTPChannel is opened in two tabs,在BlazeDS服务端2个FlexClient实例被创建(一个SWF文件一个),但是只有一个FlexSession,因为两个tab共享同一个HTTP session。
每个订阅组件都会创建MessageClient。每一个MessageClient都会和一个FlexClient以及一个FlexClient关联。
关于三者的监听器
BlazeDS服务端提供了下列监听器,来让你根据自己的逻辑来创建、销毁、以及改变三者的状态。
FlexClientListener
|
|
FlexClientAttributeListener
|
|
FlexClientBindingListener
|
|
FlexSessionListener
|
|
FlexSessionAttributeListener
|
|
FlexSessionBindingListener
|
|
MessageClientListener
|
|
数据序列化
AS对象转换为Java对象
Java对象转换为AS对象
// Product.as
package samples.externalizable {
import flash.utils.IExternalizable;
import flash.utils.IDataInput;
import flash.utils.IDataOutput;
[RemoteClass(alias="samples.externalizable.Product")]
public class Product implements IExternalizable {
public function Product(name:String=null) {
this.name = name;
}
public var id:int;
public var name:String;
public var properties:Object;
public var price:Number;
public function readExternal(input:IDataInput):void {
name = input.readObject() as String;
properties = input.readObject();
price = input.readFloat();
}
public function writeExternal(output:IDataOutput):void {
output.writeObject(name);
output.writeObject(properties);
output.writeFloat(price);
}
}
}
// Product.java
package samples.externalizable;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Map;
public class Product implements Externalizable {
private String inventoryId;
public String name;
public Map properties;
public float price;
public Product(){
}
public String getInventoryId() {
return inventoryId;
}
public void setInventoryId(String inventoryId) {
if (inventoryId != null && inventoryId.startsWith("X")){
this.inventoryId = inventoryId;
}else{
throw new IllegalArgumentException("3rd party product
inventory identities must start with 'X'");
}
}
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
name = (String)in.readObject();
properties = (Map)in.readObject();
price = in.readFloat();
setInventoryId(lookupInventoryId(name, price));
}
public void writeExternal(ObjectOutput out) throws IOException {
// Write out the client properties from the server representation
out.writeObject(name);
out.writeObject(properties);
out.writeFloat(price);
}
private static String lookupInventoryId(String name, float price) {
String inventoryId = "X" + name + Math.rint(price);
return inventoryId;
}
}
分享到:
相关推荐
#### 一、Blazeds体系结构 BlazeDS是一种用于实现Flex客户端与Java服务器端之间高效通信的技术。它允许开发者在客户端与服务器端之间轻松地发送远程调用和数据更新通知。为了更好地理解BlazeDS的工作原理,我们需要...
在Blazeds体系中,几个关键组件构成了核心,它们包括通道(Channels)、端点(Endpoints)、消息(Messages)、服务(Services)、目的地(Destinations)和适配器(Adapters)。理解这些组件的工作方式对于深入学习...
“Blazeds体系结构.doc”会深入剖析BlazeDS的架构设计,包括其组件、工作原理以及与其他Adobe技术的配合。这有助于读者理解BlazeDS如何在服务器端和客户端之间建立通道,实现数据推送和服务调用。 “新建 Microsoft...
5.2 BlazeDS体系结构 141 5.2.1 BlazeDS的组件 143 5.2.2 构建一个简单的BlazeDS应用 148 5.2.3 消息的传输过程 150 5.2.4 BlazeDS的序列化机制 156 5.2.5 FlexClient和FlexSession 161 5.3 BlazeDS的配置 162...
其改进的皮肤和组件体系结构允许开发者创建高度自定义的UI。同时,Flex4支持Spark和 Halo两种组件集,Spark组件提供更丰富的视觉效果和性能优化。 二、Flex4与Java的交互机制 1. AMF(Action Message Format):AMF...
MXML是一种标记语言,用于描述Flex应用程序的界面布局和组件结构。它类似于HTML,但更专注于组件的定义和属性设置。ActionScript则是一种面向对象的脚本语言,用于编写应用程序的业务逻辑和控制流程。在Flex中,MXML...
在这个体系结构中,Flex作为客户端,使用BlazeDS作为中间层,处理与服务器之间的数据交换,而MySQL作为数据库存储和管理数据。 **Flex数据交互**: Flex是一款强大的开发工具,用于创建互动丰富的基于Flash的用户...
而Servlet是Java平台上用于处理HTTP请求的服务端程序,它是Java EE体系结构中的重要组成部分,常用于构建动态Web应用。 在这个"flex与后台servlet建立连接"的例子中,我们关注的是如何让Flex前端与后台的Java ...
Flex 4是Adobe Flex的重大更新版本,提供了更强大的设计工具、更灵活的组件体系结构以及对ActionScript 3的深度集成。 Flex 4,也被称为Gumbo,引入了全新的Skinning和Component Model,允许开发者通过视觉元素和...
在学习和使用Flex3时,你需要掌握ActionScript的基础语法、MXML的结构以及Flex组件体系。此外,了解如何配置和使用BlazeDS或GraniteDS进行Java与Flex间的数据交换也是关键。对于Java开发者,还需要熟悉Servlet、JSP...
8. **Chapter 8** - 可能涵盖Flex的组件体系结构,包括标准组件的使用、自定义组件的创建,以及如何使用皮肤和样式来改变组件外观。 9. **Chapter 9** - 可能会讲解数据绑定和数据模型,这是Flex中非常重要的概念,...
1. **通信协议**:Spring MVC与Flex之间的通信通常采用AMF(Action Message Format),这是一种二进制协议,能够高效地传输数据,支持复杂的数据结构。 2. **服务暴露**:在Spring MVC中,通过配置Spring的...
5. **Flex框架**:包括 Cairngorm、BlazeDS、PureMVC等,这些框架为Flex应用提供了结构化的开发模式,帮助开发者更好地组织代码和管理应用程序的生命周期。 6. **Services与Remoting**:Flex支持与服务器端进行数据...
- **1.4 Spring体系结构** - **核心容器**:包含 Spring 框架的基本组成部分,如 BeanFactory 和 ApplicationContext。 - **数据访问/集成**:提供数据访问层的支持,包括 JDBC、ORM 和 OXM 等。 - **Web**:为 ...
在了解具体的Struts框架工作原理之前,我们需要先明确Struts框架的基本结构和工作流程。 **客户端请求处理流程:** 1. **客户端发起请求:** 用户通过浏览器等客户端向服务器发送HTTP请求。 2. **ActionServlet...
与此同时,Java作为企业级应用开发的主要选择之一,拥有成熟的技术体系和广泛的社区支持。结合这两种技术进行Web应用程序开发成为了一种越来越受欢迎的方案。 #### 二、Flex与Java集成的典型架构 在Flex与Java集成...
这个“完整的Flex中文帮助文档”包含了对Flex全面的介绍、教程、API参考和指南,对于学习和理解Flex技术体系至关重要。下面将详细阐述Flex的核心知识点。 1. **Flex架构**:Flex是基于Flash Player或Adobe AIR运行...