Flash应用程序的相对上下文根

时间:2010-06-07 10:25:24

标签: flex flash blazeds

我正在使用BlazeDs。

在services-config.xml中,我们得到了endPoint的以下配置。

<channel-definition id="any-amf" class="mx.messaging.channels.AMFChannel">
    <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>

在编译flash应用程序之前,我将context-root设置为compilaction选项。

bin\mxmlc  -context-root / -services "flex/services-config.xml" -optimize=true -o ..\..\bin\Messenger.swf Messenger.as

在我的情况下,这是“/”

问题是如果Web应用程序在tomcat webapps中以ROOT身份启动,那么messanger.swf能够提取请求。 我的意思是它只能通过这个url localhost访问:8080 /。如果我尝试将webaplication移动到另一个文件夹 - 例如localhost:8080 / myApplication messenger.swf无法正常工作我也必须更改root_context。

所以我的问题是如何在运行时确定上下文根,而不将其作为编译器的选项进行硬编码? 我希望我的.war应用程序正常工作,无论它在webapps文件夹(url)中的位置如何。

谢谢

2 个答案:

答案 0 :(得分:0)

在这种情况下,我建议在运行时设置通道的端点 - 在程序执行期间不能更改上下文根变量。

答案 1 :(得分:0)

使用HTTPUtil.as from "Flex Pasta"之类的东西在运行时获取应用程序URL并使用函数(getHostName, getContext, getPort)来计算servlet URL。