如何使用BlazeDS在运行时创建频道?

时间:2010-08-12 18:17:16

标签: flex flash blazeds

因此,您可能知道或不知道,BlazeDS(LiveCycle Data Services的开源版本)是让您的服务器端Java和客户端Flex应用程序一起运行的好方法。不幸的是,它确实有几个需要纠正的陷阱。我会在这里解释其中一个。

所有BlazeDS的配置都是通过您的webapp的flex/文件夹中的XML文件编写的。为清晰起见,默认名称是分开的,例如services-config.xmlremoting-config.xmlmessaging-config.xml等。在这些配置文件(特别是services-config.xml)中,定义了通道;这些设置URI和用于在服务器和客户端之间捕获和发送信息的对象。在这些配置文件中,使用如下语法是很常见的:

    <channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
        <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
        <properties>
            <add-no-cache-headers>false</add-no-cache-headers>
        </properties>
    </channel-definition>

不幸的是,他们没有告诉你的是,这些键入替换中的一些(即:{context.root})在执行时不会动态替换,而是在编译您打算分发的WAR文件时。切换域时显然不是一个好主意。

所以,我试图动态定义这些渠道。根据文档that's all good and fine,但只有在启动webapp时信道已存在时才有效。我觉得这样做有点失败。

所以我的问题是,你如何真正动态地创建频道,以便客户端和服务器都认识到它们的存在?

1 个答案:

答案 0 :(得分:0)

阅读blog post;我相信这就是你所追求的目标。

我相信这些xml配置文件根本与服务器没有直接关系。它们用于告诉SWF如何找到服务器。

在Flex App的编译期间;实质上,services-config信息被硬编码到SWF中。