Apache flex 如何使用BlazeDS在运行时创建通道?

Apache flex 如何使用BlazeDS在运行时创建通道?,apache-flex,flash,blazeds,Apache Flex,Flash,Blazeds,因此,您可能知道,也可能不知道,LiveCycle数据服务的BlazeDS开源版本是让服务器端Java和客户端Flex应用程序协同工作的好方法。不幸的是,它确实存在一些需要纠正的缺陷。我会在这里解释其中一个 BlazeDS的所有配置都是通过webapp的flex/文件夹中的XML文件编写的。为清晰起见,将默认名称分开,例如services-config.xml、remoting-config.xml、messaging-config.xml等。在这些配置文件中,特别是services-confi

因此,您可能知道,也可能不知道,LiveCycle数据服务的BlazeDS开源版本是让服务器端Java和客户端Flex应用程序协同工作的好方法。不幸的是,它确实存在一些需要纠正的缺陷。我会在这里解释其中一个

BlazeDS的所有配置都是通过webapp的flex/文件夹中的XML文件编写的。为清晰起见,将默认名称分开,例如services-config.xml、remoting-config.xml、messaging-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文件时被替换。显然,在切换域时不是一个好主意

因此,我试图动态地定义这些通道。根据文档,但只有当webapp启动时频道已经存在时,它才起作用。我觉得这样做有点失实

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

读一下这个;我相信这就是你想要的

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

在Flex应用程序的编译期间;服务配置信息本质上是硬编码到SWF中的

读一下这个;我相信这就是你想要的

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


在Flex应用程序的编译期间;服务配置信息本质上是硬编码到SWF中的

嗯,这有点帮助,但不太好。它允许我动态获取context.root,但它根本没有解释如何在服务器上创建端点;因为我必须将端点的URI硬编码到services-config.xml中,所以我不知道如何才能改变服务器所知道的context.root。嗯,这有点帮助,但还不太清楚。它允许我动态获取context.root,但它根本没有解释如何在服务器上创建端点;因为我必须将端点的URI硬编码到services-config.xml中,所以我不知道如何改变服务器所知道的context.root。