`
bigt
  • 浏览: 45440 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

LCDS & BlazeDS 中 Channel 的配置选项

阅读更多

配置文件中配置 Channel 的代码片段:

<channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
    <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
    <properties>
        <polling-enabled>true</polling-enabled>
        <polling-interval-seconds>0</polling-interval-seconds>
        <wait-interval-millis>60000</wait-interval-millis>
        <max-waiting-poll-requests>100</max-waiting-poll-requests>
        <client-wait-interval-millis>
        <piggybacking-enabled>
        <login-after-disconnect>
        <flex-client-outbound-queque-processor>
        <serialization>
        <connect-timeout-seconds>
        <invalidate-session-on-disconnect>
        <add-no-cache-headers>
    </properties>
</channel-definition>

<properties> 中各项的具体含义:

  • [polling-enable]  channel 配置可选项, 设置是否开启轮询,默认为 false.
  • [polling-interval-seconds]  channel 配置可选项, 默认值为 3. 表示客户端收到前次服务器轮询响应开始到再次向服务器轮询这段等待时间的秒数。如该项为 0 则表示客户端一旦收到服务器回应就立即开始下次轮询,期间没有等待时间。与在 Flex 文件中设置 Channel 的 pollingInterval 属性作用相同。
  • [wait-interval-millis]  endpoint 配置可选项, 默认值为 0, 表示服务器轮询响应线程在没有消息抵达时所等待时间的毫秒数。如在等待时段内有消息抵达则响应轮询传递消息,如超过等待时间则返回一个空的 acknowledgment 给客户端。考虑如下场景:客户端在时间点A向服务器发起轮询,如果此时服务器存在新消息则立即响应该次轮询,否则将等待 wait-interval-millis 指定毫秒时长。如果在等待的这段时间内如果有新消息抵达,服务器会立即中断等待将新消息传送到客户端,反之如果直到等待时间结束仍没有新消息抵达,则服务器返回一个空的 acknowledgment 给客户端。客户端收到消息(无论是有效消息还是空的 acknowledgment )后继续下一轮的的等待(由 polling-interval-seconds 指定的时长)。 该选项必须配合设置 max-waiting-poll-requests 选项(非零值)才能生效。选项的两个特殊值是 0 和 -1 。0 表示服务器不等待消息的抵达,在没有新消息的情况下对客户端的轮询都返回空的 acknowledgment。如果设为 -1 则表示服务器的响应线程一直会等到新的消息抵达后才回馈客户端。该项的推荐值是一分钟,即60000。
  • [max-waiting-poll-requests] endpoint 配置可选项,默认值 0。指定该项以设置 endpoint 中可以有多少处于等待状态的响应线程。超出部分的等待线程会返回空的 acknowledgment (如同 wait-interval-millis 被设为0)。
  • [client-wait-interval-millis] channel 配置可选项,默认值为 0 。该选项仅出现在服务器的配置文件中,用于覆盖在客户端指定的[polling-interval-seconds](通过在 Flex 文件中设置 Channel 的 pollingInterval 属性)。默认值0意味着采用[polling-interval-seconds]的设定。
  • [piggybacking-enabled] The piggybacking feature enables the transport of queued messages along with responses to any messages the client sends to the server over the channel. Piggybacking provides lightweight pseudo polling, where rather than the client channel polling the server on a fixed or adaptive interval, when the client sends a non-command message to the server (using a Producer or RemoteObject object), the server sends any pending data for client messaging or data management subscriptions along with the response to the client message. Piggybacking can also be used on a channel that has polling enabled but on a wide interval like 5 seconds or 10 seconds or more, in which case the application appears more responsive if the client is sending messages to the server. In this mode, the client sends a poll request along with any messages it sends to the server between its regularly scheduled poll requests. The channel piggybacks a poll request along with the message being sent, and the server piggybacks any pending messages for the client along with the acknowledge response to the client message.
  • [login-after-disconnect] channel 配置可选项,默认值为 false 。如将该项设为 true ,则在 session 超时而造成的安全认证丢失的情况下客户端将尝试自动认证。在认证成功后会把上次发送失败的消息再次发送。通过这种方式来避免由于 session 超时而造成的认证失效对用户造成的影响。
  • [flex-client-outbound-queue-processor] Optional channel property. Use to manage messaging quality of service for subscribers. Every client that subscribes to the server over this channel is assigned a unique instance of the specified outbound queue processor implementation that manages the flow of messages to the client. This can include message conflation, filtering, scheduled delivery and load shedding. You can define configuration properties, and if so, they are used to configure each new queue processor instance that is created. The following example shows how to provide a configuration property:
    <flex-client-outbound-queue-processor class="my.company.QoSQueueProcessor">
        <properties>
            <custom-property>5000</custom-property>
        </properties>
    </flex-client-outbound-queue-processor>
  • [serialization] 用于支持早期的Flex版本的串行类型。
  • [connect-timeout-seconds] channel 配置可选项,用于限定客户端通道的尝试连接时间。
  • [invalidate-session-on-disconnect] endpoint 配置可选项, 默认值为 disabled 。如果设为 enabled ,session 将会随着 channel 的断开而失效。如果客户端在没有断开 channel 的情况下关闭,session 保持有效直至超时。
  • [add-no-cache-headers] endpoint 配置可选项, 默认值为 true 。 用于指定是否让服务器在响应中加入 pragma no-cache 的 http 头信息,进而阻止浏览器缓存内容

 关于一般轮询:

    使用一般轮询需要在配置文件中设置 [polling-enable] 和 [polling-interval-seconds] 选项,或者无视配置文件直接在 Flex 中对 Channel 设置 pollingEnabled 和 pollingInterval 属性。一般轮询模式下,服务器对客户端的请求立即作出反应:如果消息队列中存在请求的消息则返回该消息否则返回一个空结果。

 

 

关于长轮询:

    使用长轮询需要在一般轮询的配置基础上增加 [wait-interval-millis] ,[max-waiting-poll-requests] 和 [client-wait-interval-millis],其中最关键的是 [wait-interval-millis] 。在长轮询模式下,如果消息队列里不存在客户端要求的消息,那么服务器对于客户端的轮询并不立即作出响应,而是将该请求的响应挂起,进入等待状态。一旦该轮询请求的消息进入消息队列则处于等待状态的响应线程立即激活并传递消息给客户端。响应线程在等待状态下等待的最长时间由 [wait-interval-millis] 指定,endpoint 中可以同时存在多少个处于等待状态的响应线程由 [max-waiting-poll-requests] 指定,这个数量的设置需要充分考虑服务器对于的HTTP请求的最大负载。

 

 

BlazeDS的三种推模式:实时连接--能最敏捷的反映数据的变化,但客户端需要独占宝贵的连接资源,对服务器环境的要求最高;一般轮询--只能在特定周期上获取数据变化,请求完成后立即释放连接,比较节省服务器资源;长轮询--是前两者的折中方案,即不会长期占用连接,也能在一定程度上快速反映数据变化。选择哪种推模式需要在实际项目中根据具体需求做出选择。

分享到:
评论

相关推荐

    Flex + LCDS(Blazeds)+ Java 入门教程

    配置Blazeds服务涉及定义Flex Remoting目的地,这通常在Java的flex-config.xml文件中完成。每个目的地代表一个可调用的Java服务。 7. **事件驱动编程**: Flex和Blazeds都支持事件驱动编程,使得应用程序能够响应...

    flex+java的整合,包含LCDS和BlazeDS等算中方式

    ### Flex与Java整合详解:LCDS与BlazeDS配置实践 #### 一、引言 随着Web技术的发展,客户端和服务器端之间的交互变得越来越重要。Flex作为一种强大的RIA(Rich Internet Applications)开发工具,与Java这样的...

    Flex + LCDS(Blazeds) + Java 入门教程

    【Flex + LCDS(Blazeds) + Java 入门教程】是一篇旨在引导初学者了解如何构建基于Flex、LCDS(LiveCycle Data Services)和Java的开发环境,并实现它们的集成与通信的教程。Flex是一种用于创建富互联网应用程序(RIA...

    flex.war&blazeds.war&samples.war&flex-admin.war

    最近在搞flex,发现在flex与java进行通信是需要fds(lcds),下载大小比较大,而且仅仅需要里面的war包,非常麻烦,在网上找war包的下载也杳无音信,觉得应该做些事情为大家,免去冗余的下载,即见即得,反正都是open...

    Flex Blazeds入门教程

    3. **Blazeds**:Blazeds是Adobe从LCDS中剥离出的开源数据服务中间件,保留了LCDS的核心功能,如实时通信、远程对象调用等,满足了大部分开发需求,降低了开发成本。 4. **Java**:Java是一种广泛使用的面向对象...

    Flex_J2EE_Lcds在myEclipse中的配置.rar

    本教程将详细介绍如何在myEclipse环境中配置Flex、J2EE和LCDs,以便实现高效的前后端通信。 1. 安装myEclipse 首先,确保你已经安装了myEclipse集成开发环境。myEclipse支持多种Java和Web技术,包括Flex和J2EE,是...

    flex java整合案例(使用BlazeDS和LCDS整合)

    - **设置BlazeDS/LCDS**:在服务器上部署BlazeDS/LCDS服务,并配置相应的Servlet。 - **创建Flex项目**:在Flex Builder或IDE中创建新的Flex项目,定义MXML界面和ActionScript逻辑。 - **建立连接**:通过Flex的...

    Blazeds入门教程.doc

    ### Blazeds入门教程知识点详解 #### 一、引言 ...此外,您还学习了如何配置开发环境、理解Blazeds与LCDS的区别,以及如何部署和运行项目。这些技能对于进一步深入研究Flex和Blazeds技术栈至关重要。

    Flex+J2EE+Lcds在myEclipse中的配置.doc

    【Flex+J2EE+Lcds在myEclipse中的配置】 在开发Web应用程序时,Flex作为客户端的富互联网应用(RIA)框架,与J2EE服务器端技术和Lcds(LiveCycle Data Services)结合,可以创建高效的数据交互应用。myEclipse作为...

    blazeds flash开源服务器

    6. **Flex Builder集成**:在Flex Builder(现为Adobe Flash Builder)中,Blazeds作为服务器连接选项,提供了直观的配置界面和代码自动生成,极大地简化了开发流程。 在提供的文件“blazeds-bin-readme.htm”中,...

    MyEclipse_8_5_flex4+Blazeds配置例子和blazeds下载

    【MyEclipse_8_5_flex4+Blazeds配置例子和blazeds下载】是一个关于集成开发环境MyEclipse 8.5与Adobe的BlazeDS集成使用的教程资源包,包含了配置文档和示例代码,以及BlazeDS的下载链接。这个资源对于开发者来说是...

    flex_lcds安装配置

    本教程通过图文介绍和对一些关键性的地方进行解释,让大家了解如何新建Flex的LCDS工程,并利用工具快速整合和部署J2EE项目和LCDS项目,掌握了简单的请求RemoteObject和配置的方法,初步掌握LCDS的应用之一。

    blazeds-bin-3.3.0.22497.zip

    配置BlazeDS时,你需要修改blazeds.war中的配置文件,例如flex-config.xml和services-config.xml,定义Remoting endpoints和MessageBroker channels。此外,你还需要在服务器端设置相应的数据源,并确保Java应用程序...

    Blazeds与java通信

    在本篇中,我们将深入探讨Blazeds与Java通信的核心概念和技术。 1. **Blazeds简介**: Blazeds是Adobe官方提供的一个开源项目,其全称是“BlazeDS Project”。它提供了一组服务,包括Remoting、MessageBroker和...

    BlazeDS开发者指南中文版

    1. **LiveCycle Data Services (LCDS)**:这是BlazeDS的一个高级版本,包含更多企业级特性,如数据推送、消息代理和事务管理。 2. **Remoting**:BlazeDS通过AMF协议实现实时远程调用,使得客户端可以透明地调用...

    关于blazeds应用的一个例子

    3. **LiveCycle Data Services (LCDS)**: Blazeds的基础版本,提供了更高级的企业级特性,如数据缓存、事件广播和工作流支持。 4. **Integration with Server Technologies**: Blazeds可以轻松地与各种服务器技术...

    Flex+LCDS+Java入门教程+配置

    Flex+LCDS+Java入门教程,如何使用MyEclips进行配置

    flex lcds java配置

    【Flex + LCDS + Java配置详解】 Flex 是一种用于创建富互联网应用程序(RIA)的开源框架,它允许开发者构建交互性强、用户体验丰富的Web应用。它使用MXML和ActionScript编程语言,结合Adobe Flash Player或Adobe ...

    blazeds-bin-4.0.0.15974.zip

    描述中提到的“RemoteObject控件”是BlazeDS中的一个重要组件,它使得Flex客户端可以像操作本地对象一样操作远程服务。RemoteObject控件简化了服务调用过程,无需复杂的SOAP(Simple Object Access Protocol)配置,...

Global site tag (gtag.js) - Google Analytics