今天新建一个web项目,添加flex特性,配置好各个文件。然后发现RemoteObject的路径不对。
远程对象请求的地址http://localhost:8080/WebContent/messagebroker/amf. 中间是WebContent而不是项目名称。
打开services-config.xml,路径中有context.root啊。
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> </channel-definition>
项目的flex属性的context root不知道我没注意弄错了,还是默认的是WebContent,然后改成项目名称,重启,clean,build,okay。
不过开始一直不行,没办法,调试,从RemoteObject开始追,找配置的地方,追到ServerConfig类,前面的注释说配置xml在编译的时候生成,郁闷鸟。
编译器参数加上 -keep-generated-actionscript,看看生成的as文件啥样。
果然,在项目的_项目名FlexInit-generated.as文件的最后面,发现了ServerConfig.xml的定义。
ServerConfig.xml = <services> <service id="remoting-service"> ............
而且编译器把WebContent\WEB-INF\flex下的4个xml配置文件中客户端用的信息都提出来了,放在这里。
试验时,一次flex的输出路径改成WebContent,然后觉得不爽,又改成bin-debug, 发现flex插件竟然把整个WebContent都删掉了。我靠,是它太白痴还是我太白痴,所有的非flex的资源,网页,jar包,都在这里。幸亏有备份。
-----------------------------
然后刷新,clean,build发现bin-debug中的swf就是不会被部署到服务器目录下。ft,在eclipse中找啊找,啥也没有找到。怎么都无法同步到服务器。
翻翻项目目录的哪些东西,发现wtp的部署选项在web项目下的.settings/org.eclipse.wst.common.component文件中,如下,deploy-path是服务器contextpath路径,source-path是相对于项目的根路径。要部署项目里的哪个目录到服务器端,添加一个配置项即可。
<?xml version="1.0" encoding="UTF-8"?> <project-modules id="moduleCoreId" project-version="1.5.0"> <wb-module deploy-name="USERMANAGEFlex"> <wb-resource deploy-path="/" source-path="/WebContent"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/> <wb-resource deploy-path="/" source-path="/flex_src"/> <wb-resource deploy-path="/" source-path="/bin-debug"/> <property name="java-output-path"/> <property name="context-root" value="USERMANAGEFlex"/> </wb-module> </project-modules>