因此,您可能会也可能不知道,BlazeDS(LiveCycle Data Services的开放源代码版本)是让您的服务器端Java和客户端Flex应用程序一起玩的好方法。不幸的是,它有几个缺陷需要纠正。我会尽力在这里解释其中的一个。如何在运行时使用BlazeDS创建通道?
所有BlazeDS的配置都是通过XML文件写入您的web应用程序的flex/
文件夹中。为了清楚起见,默认名称是分开的,例如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启动时通道已存在才有效。我觉得这种说法有点失败。
所以我的问题是,你如何真正创建渠道动态,使客户端和服务器都认识到他们的存在?
嗯,它有助于一点,但它不是那里。它允许我动态获取'context.root',但它完全没有解释如何在服务器上创建端点;因为我必须将端点的URI硬编码到“services-config.xml”中,所以我没有看到我可以如何改变'context.root'到服务器知道的程度。 – duckworthd 2010-08-12 19:06:51