我正在开发一个Flex 3.4应用程序,它通过最新版本的BlazeDS与JBoss-4.2.2服务器上运行的Java EE后端进行交互.当我在Tomcat上从Flash Builder 4 beta 2运行Flex应用程序时,一切都很好,Flex应用程序能够进行所需的远程调用.但我的生产环境是在JBoss上,当我将应用程序移动到JBoss时(更新了services-config.xml以适应JBoss),Flex应用程序在远程调用时不断抱怨Client.Error.MessageSend.
首先,当我手动将应用程序部署到JBoss时,faultDetail是“Channel.Security.Error error Error#2048 ……”;后来我尝试从Flash Builder运行应用程序,然后faultDetail成为“Channel.Connect.Failed错误NetConnection.Call.BadVersion”.
在services-config.xml中,在< security>下面是:
<login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
移动到JBoss时,我将其更新为:
<login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss"/>
我在JBoss的deploy文件夹中放置了一个crossdomain.xml,如下所示:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy
SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
但看起来它不起作用.我也尝试将crossdomain.xml放在deploy / xxxxx.war文件夹中,问题仍然存在.
我正在使用http://,而不是https://,所以我猜这不是关于安全通道.
试图寻找解决方案,但大多数解决方案都与PHP相关,这实际上没有用.有人得到任何线索吗?
解决方法:
你有
<login-command class="**flex.messaging.security.TomcatLoginCommand**" server="Tomcat"/>
如果类指示安全性是tomcat,则应将其更改为实现接口flex.messaging.security.LoginCommand或任何安全性接口blaze的类.