2010-08-12 5 views
2

BlazeDS (version open source de LiveCycle Data Services) est un bon moyen de faire fonctionner ensemble votre application Flex côté client Java et votre application côté client. Malheureusement, il y a plusieurs pièges à corriger. Je vais essayer d'expliquer l'un d'entre eux ici.Comment créer des canaux à l'exécution en utilisant BlazeDS?

Toute la configuration de BlazeDS est écrite via des fichiers XML dans le dossier flex/ de votre webapp. Les noms par défaut sont séparés pour plus de clarté, tels que services-config.xml, remoting-config.xml, messaging-config.xml, etc. Dans ces fichiers de configuration (en particulier services-config.xml), les canaux sont définis; ces URI d'installation et les objets utilisés pour capturer et envoyer des informations entre le serveur et le client. Dans ces fichiers de configuration, il est assez fréquent d'utiliser une syntaxe comme ceci:

<channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel"> 
     <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/> 
     <properties> 
      <add-no-cache-headers>false</add-no-cache-headers> 
     </properties> 
    </channel-definition> 

Malheureusement, ce qu'ils ne vous disent pas est que certains de ces remplacements clés en (ie: {} context.root) ne sont pas remplacés dynamiquement lors de l'exécution mais lors de la compilation du fichier WAR que vous avez l'intention de distribuer. Evidemment pas une bonne idée lors du changement de domaine. Donc, à la place, je cherche à définir ces canaux dynamiquement. Selon la documentation, that's all good and fine, mais cela ne fonctionne que si le canal existe déjà lorsque la webapp est lancée. Je me sens comme ce genre de défaites le point. Donc, ma question est, comment créez-vous vraiment des canaux dynamiquement afin que le client et le serveur reconnaissent leur existence?

Répondre

0

Lisez ceci blog post; Je crois que c'est ce que tu cherches. Je crois que ces fichiers de configuration xml n'ont aucune relation directe avec le serveur. Ils sont utilisés pour indiquer au SWF comment trouver le serveur.

Pendant la compilation de votre application Flex; l'information de services-config est, en substance, codée en dur dans le fichier SWF.

+0

Mmm, ça aide un peu, mais ce n'est pas tout à fait là. Ce qu'il me permet de faire est d'obtenir dynamiquement le 'contexte.root', mais cela n'explique pas du tout comment créer des points de terminaison sur le serveur; Comme je dois essentiellement coder en dur l'URI des points de terminaison dans 'services-config.xml', je ne vois pas comment je peux changer ce que' context.root' est aussi loin que le serveur le sait. – duckworthd