2010-06-22 2 views
3

Hier, j'ai passé la moitié de la journée à essayer de forcer Flex Remoting à utiliser HTTPS sans succès.Flex ignore les changements dans services-config.xml

Aujourd'hui, j'ai essayé de me connecter à un autre domaine. J'ai changé l'adresse URL du point de terminaison, mais il semble que flex ignore simplement mes changements. Je suis sûr qu'une ancienne URL n'existe pas dans un fichier dans le répertoire src, J'ai même renommé services-config.xml à services-config2.xml, nettoyé et reconstruit projet plusieurs fois, même fait une version de construction, mais il se connecte toujours au même domaine.

J'ai testé l'application flexible dans localhost et dans le même domaine, qui a des services AMF, mais cela fonctionne de la même manière.

Mes services-config.xml est:

<?xml version="1.0" encoding="UTF-8"?> 
<services-config> 
    <services> 
     <service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage"> 
      <destination id="amfphp"> 
       <channels> 
        <channel ref="my-amfphp-secure"/> 
        <channel ref="my-amfphp"/> 
       </channels> 
       <properties> 
        <source>*</source> 
       </properties> 
      </destination> 
     </service> 
    </services> 
    <channels> 
     <channel-definition id="my-amfphp-secure" class="mx.messaging.channels.SecureAMFChannel"> 
      <endpoint uri="https://xxx.dev.company.com:443/AMF" class="flex.messaging.endpoints.SecureAMFEndpoint"/> 
      <properties> 
       <polling-enabled>false</polling-enabled> 
       <serialization> 
        <instantiate-types>false</instantiate-types> 
        <log-property-errors>true</log-property-errors> 
       </serialization> 
       <add-no-cache-headers>false</add-no-cache-headers> 
      </properties> 
     </channel-definition> 
     <channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel" > 
      <endpoint uri="http://xxx.dev.company.com/AMF" class="flex.messaging.endpoints.AMFEndpoint" /> 
      <properties> 
       <polling-enabled>false</polling-enabled> 
       <serialization> 
        <instantiate-types>false</instantiate-types> 
        <log-property-errors>true</log-property-errors> 
       </serialization> 
       <add-no-cache-headers>false</add-no-cache-headers> 
      </properties> 
     </channel-definition> 
    </channels> 
</services-config> 

définition RemoteObject dans MXML:

<mx:RemoteObject id="Agentrpc" destination="amfphp" source="Agentrpc" showBusyCursor="true"> 
    <mx:method name="getAgentID" result="getAgentID_resultHandler(event)" fault="faultHandler(event)"/> 
</mx:RemoteObject> 

J'utilise Flex 3.

Edit: J'ai regardé généré/dir et je vois que les fichiers FlexInit (comme MainModule_FlexInit-generated.as) contient le code:

ServerConfig.xml = 
<services> 
    <service id="amfphp-flashremoting-service"> 
     <destination id="amfphp"> 
      <channels> 
       <channel ref="my-amfphp-secure"/> 
       <channel ref="my-amfphp"/> 
      </channels> 
     </destination> 
    </service> 
    <channels> 
     <channel id="my-amfphp-secure" type="mx.messaging.channels.SecureAMFChannel"> 
      <endpoint uri="https://gintautas.dev.company.com:443/AMF"/> 
      <properties> 
       <polling-enabled>false</polling-enabled> 
      </properties> 
     </channel> 
     <channel id="my-amfphp" type="mx.messaging.channels.AMFChannel"> 
      <endpoint uri="http://gintautas.dev.company.com/AMF"/> 
      <properties> 
       <polling-enabled>false</polling-enabled> 
      </properties> 
     </channel> 
    </channels> 
</services>; 

C'est exact, mais l'application ne fait pas la demande de gintautas.dev.company.com

Edit 2: J'ai installé Flash Builder 4 et essayé de compiler en utilisant 3.5 et 4.0 (en mode de compatibilité) compilateurs, mais les deux ont le même problème :(

+0

Cela peut ou ne peut pas aider (puisque nous évitons des services de config autant que possible et faire autant que possible programatically), mais je sais que les problèmes que j'avais il y a quelques années concernaient la classe AMFChannel par rapport à la classe SecureAMFChannel. Je ne sais pas comment channelSet de votre remoteObject est initialisé lorsque le fichier xml services-config est analysé, mais je sais que j'ai l'impression d'avoir beaucoup plus de contrôle lorsque ces choses sont faites par programmation. –

Répondre

1

Pouvez-vous essayer d'effacer le cache de votre navigateur? Le contenu du fichier services.xml est injecté dans le fichier SWF au moment de la compilation.

+0

Déjà essayé. Le cache est totalement désactivé par le plugin Web Developer dans Firefox, tous les fichiers sont téléchargés à chaque fois/ – Naktibalda

+0

Tout d'un coup, il a commencé à fonctionner, probablement parce que j'ai fait une copie du projet et changé d'espace de travail. – Naktibalda

+0

ne peux pas croire qu'un problème de mise en cache m'a frappé à nouveau! Merci d'avoir mentionné le –

1

vous pouvez vérifier ce qui est compilé dans flex des fichiers * -config.XML avec les éléments suivants:

trace(ServerConfig.XML); 

En outre, si vous utilisez WTP avec tomcat, vérifiez si le serveur utilise l'installation réelle de tomcat ou un dossier Eclipse temporaire à exécuter. cela peut parfois causer des mélanges.

+0

David, merci pour cette astuce. Avoir des problèmes similaires à la publication originale - être capable de voir ce qui a été compilé ostensiblement est vraiment une bonne chose. +1 –

0

Vous devez « projet propre » dans Flex Builder lorsque vous changer services config.xml

Questions connexes