2009-11-11 6 views
4

Je développe une application Flex 3.4 qui interagit avec un backend Java EE s'exécutant sur un serveur JBoss-4.2.2, via la dernière version de BlazeDS. Lorsque j'ai exécuté l'application Flex à partir de Flash Builder 4 beta 2 sur Tomcat, tout allait bien, l'application Flex était capable de rendre l'appel distant nécessaire. Mais mon environnement de production est sur JBoss, et quand j'ai déplacé l'application vers JBoss (avec services-config.xml mis à jour pour s'adapter à JBoss), l'application Flex continue de se plaindre de Client.Error.MessageSend lors d'appels à distance. Au début, lorsque je déployais manuellement l'application sur JBoss, la propriété faultDetail était "Channel.Security.Error error Error #2048 ... "; plus tard, j'ai essayé d'exécuter l'application à partir de Flash Builder, puis faultDetail est devenu "Channel.Connect.Failed error NetConnection.Call.BadVersion".Client.Error.MessageSend problème avec Flex/BlazeDS sur JBoss

Dans les services-config.xml, sous <security>, était:

<login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/> 

lors du passage à JBoss, je mis à jour à:

<login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss"/> 

J'ai un crossdomain.xml placé dans JBoss' déployer le dossier, comme suit:

<?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> 

Mais il semble que cela ne fonctionne pas. J'ai également essayé de mettre crossdomain.xml dans le dossier deploy/xxxxx.war, et le problème demeure.

J'utilise http: //, pas https: //, donc je suppose que ce n'est pas sur le canal de sécurité.

Essayé de rechercher une solution, mais la plupart des solutions étaient liées à PHP, ce qui n'était pas vraiment utile. Quelqu'un a des indices?

+1

Soyez prudent avec les fichiers crossdomain.xml. Ils peuvent ouvrir votre site jusqu'à de graves failles de sécurité. Voir un article que j'ai écrit intitulé "Comment mauvaises politiques crossdomain exposent des données protégées à des applications malveillantes" pour plus de détails: http://www.jamesward.com/blog/2009/11/08/how-bad-crossdomain-policies-expose -protected-data-to-malveillant-applications/ –

+0

Avez-vous vérifié la sortie du journal JBoss (dans $ JBOSS_HOME/server/default/log /)? Y at-il des messages d'erreur? Essayez de définir le niveau de journalisation de BlazeDS sur "Debug", s'il n'y en a pas. – weltraumpirat

Répondre

0

Si vous naviguez jusqu'à http://your.application.root/crossdomain.xml, le fichier est-il chargé? La configuration la plus simple consiste à placer le fichier à la racine du domaine.

+0

Oui, je peux accéder à crossdomain.xml à partir de http: // {server.name}: {server.port}/{context.root}/'. –

+0

Il semble que vous ayez résolu le problème du domaine croisé à ce moment-là. Vous recevez maintenant uniquement l'erreur NetConnection.Call.BadVersion? –

1

Vous avez

<login-command class="**flex.messaging.security.TomcatLoginCommand**" server="Tomcat"/> 

Lorsque la classe indique que la sécurité est de tomcat, vous devriez changer à une classe qui implémente l'interface flex.messaging.security.LoginCommand ou tout incendie d'interface de sécurité.