`
碧海山城
  • 浏览: 192634 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Blazeds文档(二)-------Blazeds体系结构(二)

阅读更多

服务端FlexClientMessageClientFlexSession类的实例代表了Flex应用和服务端的连接。你可以使用这些对象管理FLEX应用程序和服务端的同步。

 

FlexClient, MessageClient, and FlexSession objects

 

FlexClient

 

每一个MXML或者ASFlex应用都被编译进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服务端2FlexClient实例被创建(一个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
分享到:
评论

相关推荐

    blazeds-bin-3.3.0.22497.zip

    2. **blazeds-bin-readme.htm**:这是BlazeDS的二进制发行版的阅读指南。文件中通常会包含安装步骤、配置说明、系统需求、已知问题和解决方法等重要信息。对于开发者来说,理解readme文件中的内容至关重要,因为它...

    blazeds-turnkey-4.0.0.14931

    6. **示例与文档**:`samples.war`文件包含了各种示例应用,可以帮助开发者快速理解和学习BlazeDS的使用。`docs`目录下的文档提供了详细的API参考和用户指南,便于查阅。 7. **控制台**:`ds-console.war`是数据...

    blazeds-bin-4.0.1.17657.zip

    这个“blazeds-bin-4.0.1.17657.zip”压缩包包含了BlazDS的二进制版本,这是一个开放源代码的服务器端技术,由Adobe开发并广泛应用于构建富互联网应用程序(RIA)。它的主要目标是提供数据集成和交互能力,使得基于...

    blazeds-turnkey-4.0.0.14931第四卷

    blazeds-turnkey-4.0.0.14931第四卷(共四卷) 含tomcat

    blazeds-core-3.2.0.3978.jar

    blazeds-core-3.2.0.3978.jar blazeds-core-3.2.0.3978.jar

    blazeds-bin-4.0.0.15974.zip

    Blazeds-bin-4.0.0.15974.zip是一个包含Adobe BlazeDS库的压缩包,专为Flex开发者设计,旨在提供强大的数据集成和远程服务访问功能。BlazeDS是Adobe官方推出的一个开源项目,它允许Flex客户端与Java后端服务器之间...

    blazeds-turnkey-4.0.0.14931.zip

    在压缩包内的文件列表中,"blazeds"可能是指解压后的目录,其中包含了Blazeds的安装文件、文档、示例代码等资源。开发者通常会按照官方提供的安装指南进行部署,配置Tomcat服务器,然后将Blazeds的库文件添加到Flex...

    blazeds-turnkey-4.0

    在提供的`blazeds-turnkey-4.0.0.14931.zip`压缩包中,我们可以找到以下关键资源: 1. `blazeds-turnkey-readme.htm`:这是项目的基本使用指南,详细介绍了如何配置和运行BlazeDS Turnkey,包括系统需求、安装步骤...

    blazeds-turnkey-4.0.0.14931.zip分卷二

    blazeds-turnkey-4.0.0.14931.zip分卷二

    blazeds一系列的jar包-4.0

    包含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 3-0-0-544

    BlazeDS的核心功能是提供了轻量级的消息传输服务,它基于AMF(Action Message Format),这是一种高效的二进制序列化协议,能够将复杂的数据结构快速地在Flex客户端与Java服务器之间进行传递。通过AMF,开发者可以...

    blazeds-turnkey-4.0.0.14931第二卷

    blazeds-turnkey-4.0.0.14931含tomcat 第二卷(共四卷)

    blazeds-turnkey-4.0.0.14931第一卷

    blazeds-turnkey-4.0.0.14931含tomcat 第一卷(共四卷)

    blazeds-turnkey-4.0.0.14931第三卷

    blazeds-turnkey-4.0.0.14931第三卷(共四卷) 含tomcat

    blazeds-turnkey-4.0.14931

    Blazeds-Turnkey是Adobe官方推出的一款强大的服务器端解决方案,专为Flex应用程序提供数据集成、消息传递和Remoting服务。这个项目的核心是使开发者能够更便捷地在Flex客户端和Java后端之间建立连接,实现数据的双向...

    flex-src.zip_blazeds_blazeds src download_blazeds-bin-4._flex_tr

    2. **AMF协议**:AMF是BlazeDS用来高效传输数据的一种二进制格式,它能够将ActionScript对象序列化为网络传输友好的格式。在“inventory”、“testdrive-101”等子目录中,可能包含使用AMF进行数据交换的相关示例或...

    Blazeds+ds-consele+samples

    Blazeds+ds-consele+samples 是一个与Flex开发密切相关的资源集合,主要用于搭建Java和Flex之间的通信桥梁。BlazeDS是Adobe提供的一款开源服务器端技术,它使得 Flex 客户端能够与Java应用程序服务器进行实时数据...

    spring-blazeds-reference.rar_blazeds-bin-4._flex

    配置BlazeDS涉及到Spring上下文配置和BlazeDS配置文件(services-config.xml)。在Spring配置中,需要定义要公开的服务bean,并指定其AMF通道。在BlazeDS配置文件中,定义了通道集、目的地以及安全设置,确保数据...

    blazeds-bin-3.3.0.20776

    BlazDS的全称是“Blaze Data Services”,在标题中提到的“blazeds-bin-3.3.0.20776”是BlazDS的一个特定版本号,这通常意味着包含了该版本的所有组件和库。 1. **Flex与Java通信**: Flex是一种用于构建富互联网...

Global site tag (gtag.js) - Google Analytics