在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)中的位置如何。
谢谢
答案 0 :(得分:0)
在这种情况下,我建议在运行时设置通道的端点 - 在程序执行期间不能更改上下文根变量。
答案 1 :(得分:0)
使用HTTPUtil.as from "Flex Pasta"之类的东西在运行时获取应用程序URL并使用函数(getHostName, getContext, getPort
)来计算servlet URL。