- 浏览: 68483 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
zhoujunying:
谢谢!!
flex 15秒超时 -
hiphunter921:
你settimeout写的对么?setTimeout(show ...
flex 15秒超时 -
zhoujunying:
为什么我的用settimeout还是会出现超时现象!!!
fu ...
flex 15秒超时 -
hiphunter921:
我所谓的是html里面的object标签,flash就是一个o ...
FABridge.js中的一个小问题 -
fhuan123:
您好,我也遇上了FABridge.bridgeName.roo ...
FABridge.js中的一个小问题
下载了wing酱的新浪微博AIR版,突然对Adobe AIR 产生了兴趣,刚巧遇上国内某聊天软件与某杀毒软件闹矛盾,本来就对这些软件没有好感的我就萌生一个念头,用AIR写个小小聊天工具,嘿嘿,我就立马想到了以前在RIA中使用过的BlazeDS RemoteObject,听说有个message service,所以来试试吧。
At the beginning, i tried to use the lastest version of sdk, so i download the Flex SDK 4.1(build 16076) and setup it successfully.
However, when I tried to run my AIR application, I ran into this error:
VerifyError: Error #1014: Class IIMEClient could not be found.
After doing a bit of research I found out that my Adobe AIR project’s application descriptor file wasn’t using the correct namespace for the AIR 2.0 SDK. According to the Adobe AIR 2 Release Notes:
I made the change in the descriptor file, and now everything works perfectly.
Flex code as follow:
<s:Producer id="producer"/>
<s:Consumer id="consumer"/>
import mx.messaging.ChannelSet; import mx.messaging.channels.AMFChannel; import mx.messaging.events.MessageEvent; import mx.messaging.messages.AsyncMessage; private function init():void{ consumer= new Consumer(); consumer.destination = "chat"; var channel:AMFChannel=new AMFChannel("my-long-polling-amf","http://192.168.2.80:8080/TestFlex/spring/messagebroker/amflongpolling"); var channelSet:ChannelSet = new ChannelSet(); channelSet.addChannel(channel); consumer.channelSet=channelSet; consumer.addEventListener(MessageEvent.MESSAGE, function(event:MessageEvent):void{ chatText.text += event.message.body.chatMessage + "\n"; }); consumer.subscribe(); producer.destination="chat"; producer.channelSet= channelSet; } protected function button1_clickHandler(event:MouseEvent):void{ var message:AsyncMessage = new AsyncMessage(); message.body.chatMessage = inputChat.text; producer.send(message); inputChat.text = ""; }
The server side configuration:
In order to use long polling amf channel , I added some config into the service-config.xml:
<channel-definition id="my-long-polling-amf" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amflongpolling" class="flex.messaging.endpoints.AMFEndpoint"></endpoint> <properties> <polling-enabled>true</polling-enabled> <wait-interval-millis>-1</wait-interval-millis> <polling-interval-millis>100</polling-interval-millis> <max-waiting-poll-requests>50</max-waiting-poll-requests> </properties> </channel-definition>
- wait-interval-millis dictates how long the server should wait before returning a polling request. The default is 0. By setting it to -1, we are telling it to wait indefinitely until a message is to be routed to the client.
- polling-interval-millis is the time interval between polling requests. Since we no longer need to pace the requests, we could safely set the interval to 0.
- max-waiting-poll-requests caps the number of long polling clients. Since the server is not ackowleging right away during long polling, each client hogs one server thread. Once the cap is reached, any new clients fall back to simple polling clients.
We can see the specification of BlazeDS channel and endpoint from here .
I use the spring flex integration framework to my app. So i add some code to the applicationContext_flex.xml:
<flex:message-broker> <flex:message-service default-channels="my-streaming-amf,my-long-polling-amf,my-polling-amf" /> </flex:message-broker> <flex:message-destination id="chat" />
I defined a message destination named 'chat', hence the client side can use the name as the destination name.
tip:
- In the AIR app, we also need to set a Flex Server to it for using blazeds.
- To use a producer or a consumer , we need to set its channel.
In the RIA, i used to code like this:
var channelSet:ChannelSet = new ChannelSet(["my-long-polling-amf"]);
But in the AIR, there are some difference. It need giving fully qualified url's including the port for the destination, and using addChannel function instead of just using the ChannelSet constructor:
var channel:AMFChannel=new AMFChannel("my-long-polling-amf","http://192.168.2.80:8080/TestFlex/spring/messagebroker/amflongpolling");
var channelSet:ChannelSet = new ChannelSet();
channelSet.addChannel(channel);
发表评论
-
关于RSL的一段翻译
2011-12-13 21:28 1155为了找出可以从代码 ... -
ie中打开flash莫名其妙js报错,qq登陆后不停报错重启 解决方案
2011-02-24 15:31 3277ie中报错:__flash__addCallback(inst ... -
«Flex3宝典»读书笔记(2)
2010-11-14 14:34 018 使用高级列表控件 18.1.1 使用可编辑的Combo ... -
AS3技巧与提示1-8
2010-11-03 16:28 01. 改变影片的帧频 在 ... -
AS3技巧与提示38-44
2010-11-03 16:27 038.is 运算符(对比instanceof) AS3新 ... -
AS3技巧与提示33-37
2010-11-03 16:26 033.将事件处理器作为普通函数调用 AS3中我们定义事件 ... -
AS3技巧与提示29-32
2010-11-03 16:25 029.判断实例所属类及其 ... -
AS3技巧提示14-18
2010-11-03 16:24 014.SimpleButton类 AS3新增一个Simp ... -
AS3技巧提示9-13
2010-11-03 16:23 09.类型转换和as运算符 在必要的时候,AS充许把对象的 ... -
AS3技巧与提示45-48
2010-11-03 16:20 045.无用单元回收:引用计 ... -
AS3技巧提示19-22
2010-11-03 16:18 019.抽象类 AS3仍然不支持抽象类(不能示例化,只是用 ... -
AS3技巧与提示52-60
2010-11-03 16:16 052 用…(rest) 来表示不确定个数的Arguments变 ... -
AS3技巧与提示23-28
2010-11-03 16:13 023.新的深度排序方法 AS3中运用显示列表(displ ... -
AS3技巧与提示49-51
2010-11-03 16:11 049.getBounds()和getRect()对比 ... -
Flex中的Vector
2010-11-03 15:50 3775今天在一个concrete example 中看到了:var ... -
«Flex3宝典»读书笔记(1)
2010-10-30 10:38 0写flex也近一年了,从没 ... -
flex 15秒超时
2010-10-20 15:19 3648在flex中可以通过ExternalInterface调用js ... -
对于datagrid中删除后,对selectedIndex赋值后的问题
2010-07-06 19:30 1768对于datagrid中删除后,想要自动选中下一条记录,如果是最 ... -
FABridge.js中的一个小问题
2010-05-25 14:44 2368今天在尝试使用FABridge来连接flex与js时候,按照一 ... -
JAVA和FLEX整合(blazeds部署过程)
2010-02-10 14:33 2876刚开始时候尝试成功了 ...
相关推荐
BlazeDS 是一款基于 Java 的服务器端远程方法调用(Remoting)和实时Web消息传递技术,由Adobe官方提供,它使得开发者能够轻松地将Flex和Adobe AIR应用程序连接到后端分布式数据,并实现实时数据推送,从而创建更具...
在本例子中,我们将探讨如何使用Flex与Java后端进行远程调用,借助Adobe的BlazeDS服务。BlazeDS是Flex与Java服务器之间通信的一个中间件,支持AMF(Action Message Format)协议,提供数据推送、拉取和消息代理等...
6. **配置文档**:压缩包中的配置文件可能包括`services-config.xml`,用于配置BlazeDS的服务,包括频道设置、消息代理等;还有可能包括`web.xml`,在Servlet容器中部署BlazeDS时进行必要的配置。 7. **jar包**:...
BlazeDS是Adobe公司推出的一款强大工具,专为Adobe Flex或Adobe AIR等客户端应用程序提供高效、可扩展的远程访问和消息服务。它允许客户端应用与服务器端数据进行连接,并在多客户端间传输数据,实现真正的实时消息...
消息服务是BlazeDS的另一大亮点,它允许客户端作为消息生产者(Producer)发送消息,而消息消费者(Consumer)订阅并接收消息。这种异步通信方式特别适用于实时更新和多用户协作的场景。此外,BlazeDS通过JMSAdapter...
1. **设置环境**:首先需要安装Adobe Flex Builder或使用其他IDE集成BlazeDS库,同时在服务器端部署BlazeDS服务。 2. **创建服务**:在服务器端定义Java服务,这些服务通常以Spring Bean的形式存在,可以通过注解或...
4. **数据访问组件**:在Flex中使用`RemoteObject`或`WebService`组件调用后端服务。 5. **事件监听和处理**:在Flex客户端代码中添加事件监听器,处理服务器推送的数据。 **示例应用:FlexTest** "FlexTest"可能是...
通过 BlazeDS,你可以方便地调用 Java 对象的方法,并且它还提供了远程调用(Remoting)功能以及Web消息传递(Web Messaging)功能,支持Comet样式的消息推送,使得服务器能够主动向客户端发送数据。 在Windows环境...
**BlazeDS**是一款由Adobe提供的开源服务,它主要用于在Flex或AIR等客户端程序与后端服务器之间建立高效的通信渠道。该工具允许开发者轻松地在客户端与服务器之间进行数据交换,并实现实时消息推送功能。 #### 二、...
2. **services-config.xml**:这是BlazeDS的核心配置文件,用于定义服务、目的地和消息通道。在这个文件中,可以设置日志级别、服务类型、安全策略等。例如,下面的代码段用于设置日志级别为Error,并自定义日志前缀...
Flex和AIR程序使用Flex组件与BlazeDS服务器进行通信,包括RemoteObject、HTTPService、WebService、Producer和Consumer等组件。这些组件都是Flex SDK的一部分。除了Flex或AIR之外,也可以结合使用HTML和JavaScript...
BlazeDS 的核心功能包括远程调用服务和消息传递服务。远程调用服务允许 Flex 客户端直接调用服务器端的 POJOs(Plain Old Java Objects)、Spring 服务或 EJB 方法,极大地简化了分布式应用的开发。消息传递服务则...
- 在客户端代码中使用 RemoteObject 组件来调用远程服务的方法,并处理返回的数据。 - **消息服务例子**: - 设置消息目的地。 - 创建 Producer 来发送消息。 - 创建 Consumer 来监听并处理消息。 #### 七、创建...
3. **JMS Integration** - Blazeds还支持与Java消息服务(JMS)的集成,这意味着它可以作为一个JMS客户端,发送和接收JMS消息。这种能力增强了Blazeds的灵活性,使其能够在复杂的分布式系统中作为消息传递的中介。 ...
5. 建立连接:在Flex客户端,使用RemoteObject或HTTPService组件连接到BlazeDS服务。 6. 测试与调试:运行Flex应用,确保前端和后端的通信正常。 **最佳实践** 1. 数据传输优化:使用AMF减少网络传输开销,提高数据...
本文将深入探讨如何在FlashBuilder4beta环境中使用BlazeDS创建与远程服务器交互的Flex应用程序。 **关键知识点概述** 1. **BlazeDS的基本概念** - BlazeDS作为中间件,提供了一种机制,使Flex客户端能够透明地...
RPC Services利用请求/响应模式,而消息服务则使用发布/订阅模式来广播数据给订阅者,同时结合请求/响应处理消息发布和数据交换问题。 6. **Channels和Endpoints**:通道是客户端与服务器通信的途径,负责数据封装...
无论是在Web应用(Flash Player)还是桌面应用(Adobe AIR)中,BlazeDS都能无缝工作,兼容多种Java应用服务器,如Tomcat、WebSphere、WebLogic、JBoss以及ColdFusion。 总之,BlazeDS通过AMF协议实现了Java和Flex...