服务端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;
}
}
- 大小: 42.8 KB
- 大小: 115 KB
- 大小: 67.6 KB
- 大小: 159.8 KB
- 大小: 40.1 KB
- 大小: 42.8 KB
分享到:
相关推荐
2. **blazeds-bin-readme.htm**:这是BlazeDS的二进制发行版的阅读指南。文件中通常会包含安装步骤、配置说明、系统需求、已知问题和解决方法等重要信息。对于开发者来说,理解readme文件中的内容至关重要,因为它...
6. **示例与文档**:`samples.war`文件包含了各种示例应用,可以帮助开发者快速理解和学习BlazeDS的使用。`docs`目录下的文档提供了详细的API参考和用户指南,便于查阅。 7. **控制台**:`ds-console.war`是数据...
这个“blazeds-bin-4.0.1.17657.zip”压缩包包含了BlazDS的二进制版本,这是一个开放源代码的服务器端技术,由Adobe开发并广泛应用于构建富互联网应用程序(RIA)。它的主要目标是提供数据集成和交互能力,使得基于...
blazeds-turnkey-4.0.0.14931第四卷(共四卷) 含tomcat
blazeds-core-3.2.0.3978.jar blazeds-core-3.2.0.3978.jar
Blazeds-bin-4.0.0.15974.zip是一个包含Adobe BlazeDS库的压缩包,专为Flex开发者设计,旨在提供强大的数据集成和远程服务访问功能。BlazeDS是Adobe官方推出的一个开源项目,它允许Flex客户端与Java后端服务器之间...
在压缩包内的文件列表中,"blazeds"可能是指解压后的目录,其中包含了Blazeds的安装文件、文档、示例代码等资源。开发者通常会按照官方提供的安装指南进行部署,配置Tomcat服务器,然后将Blazeds的库文件添加到Flex...
在提供的`blazeds-turnkey-4.0.0.14931.zip`压缩包中,我们可以找到以下关键资源: 1. `blazeds-turnkey-readme.htm`:这是项目的基本使用指南,详细介绍了如何配置和运行BlazeDS Turnkey,包括系统需求、安装步骤...
blazeds-turnkey-4.0.0.14931.zip分卷二
包含blazeds-common-4.0.0.14931.jar、blazeds-core-4.0.0.14931.jar、blazeds-proxy-4.0.0.14931.jar、blazeds-remoting-4.0.0.14931.jar
BlazeDS的核心功能是提供了轻量级的消息传输服务,它基于AMF(Action Message Format),这是一种高效的二进制序列化协议,能够将复杂的数据结构快速地在Flex客户端与Java服务器之间进行传递。通过AMF,开发者可以...
blazeds-turnkey-4.0.0.14931含tomcat 第二卷(共四卷)
blazeds-turnkey-4.0.0.14931含tomcat 第一卷(共四卷)
blazeds-turnkey-4.0.0.14931第三卷(共四卷) 含tomcat
Blazeds-Turnkey是Adobe官方推出的一款强大的服务器端解决方案,专为Flex应用程序提供数据集成、消息传递和Remoting服务。这个项目的核心是使开发者能够更便捷地在Flex客户端和Java后端之间建立连接,实现数据的双向...
2. **AMF协议**:AMF是BlazeDS用来高效传输数据的一种二进制格式,它能够将ActionScript对象序列化为网络传输友好的格式。在“inventory”、“testdrive-101”等子目录中,可能包含使用AMF进行数据交换的相关示例或...
Blazeds+ds-consele+samples 是一个与Flex开发密切相关的资源集合,主要用于搭建Java和Flex之间的通信桥梁。BlazeDS是Adobe提供的一款开源服务器端技术,它使得 Flex 客户端能够与Java应用程序服务器进行实时数据...
配置BlazeDS涉及到Spring上下文配置和BlazeDS配置文件(services-config.xml)。在Spring配置中,需要定义要公开的服务bean,并指定其AMF通道。在BlazeDS配置文件中,定义了通道集、目的地以及安全设置,确保数据...
BlazDS的全称是“Blaze Data Services”,在标题中提到的“blazeds-bin-3.3.0.20776”是BlazDS的一个特定版本号,这通常意味着包含了该版本的所有组件和库。 1. **Flex与Java通信**: Flex是一种用于构建富互联网...