因此,您可能知道或不知道,BlazeDS(LiveCycle Data Services的开源版本)是让您的服务器端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文件时。切换域时显然不是一个好主意。
所以,我试图动态定义这些渠道。根据文档that's all good and fine,但只有在启动webapp时信道已存在时才有效。我觉得这样做有点失败。
所以我的问题是,你如何真正动态地创建频道,以便客户端和服务器都认识到它们的存在?
答案 0 :(得分:0)
阅读blog post;我相信这就是你所追求的目标。
我相信这些xml配置文件根本与服务器没有直接关系。它们用于告诉SWF如何找到服务器。
在Flex App的编译期间;实质上,services-config信息被硬编码到SWF中。