问题:
CCBN展会上的机器访问OSS系统页面,出现 Error #2032 Stream Error错误,不能查看SWF文件。
环境:
Flex编译方式目前有两种,一种是RSL ( Runtime shared library ),另一种是Merged into code,两者的最大区别在于第二种方式在编译时把依赖于Flex框架相关的文件一起编译到源文件的swf中,故比第一种使用RSL方式编译出来的swf文件大很多。
而使用RSL的方式编译则需要将Flex框架文件放到源swf的同目录位置。
Flex的框架文件分两种,编译时期是.swz(例如framework_4.0.0.14159.swz),运行时期是.swf(例如framework_4.0.0.14159.swf),经分析,客户机器访问时会优先加载framework_4.0.0.14159.swz,当加载成功后,会放到Flash Player的cache目录下,如果加载失败,Flash Player会自动下载framework_4.0.0.14159.swf(这两种文件只要有一种能下载到就可以正常显示)。
问题分析:
我们当前的OSS系统的oss_system_web_page工程的flash目录下只放有Flex框架的相关swf文件(共有6个),没有相关的swz文件。当展会的机器访问系统时,找不到框架的swz文件,也没有自动去找框架的swf文件,故访问出错。而我们公司里的台式机会自动找框架的swf文件,故不会出问题。
解决方法:
首先将Flex相关的swz框架文件(共6个,framework_4.0.0.14159.swz,osmf_flex.4.0.0.13495.swz,rpc_4.0.0.14159.swz,spark_4.0.0.14159.swz,sparkskins_4.0.0.14159.swz,textLayout_1.0.0.595.swz)放到oss_system_web_page工程的flash目录下,然后配置此工程的web.xml文件,让Tomcat服务器能够识别swz文件:
<mime-mapping>
<extension>swz</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
这样当展会机器访问系统时就能找到Flex框架相关的swz文件了,从而能正确访问系统的swf文件。问题解决。