2011-08-03 2 views
0

J'ai une application flexible qui charge un fichier WSDL au moment de l'exécution et le partage sur plusieurs services Web différents que j'ai définis. Malheureusement, chaque appel à loadWSDL() fait une requête réseau, et bien que ce ne soit pas vraiment un problème dû à la mise en cache, il est toujours ennuyeux et inutile d'avoir toutes ces requêtes générées. Existe-t-il un moyen plus simple de résoudre ce problème et de ne faire qu'une seule requête réseau?Les services Web Flex partagent un même fichier wsdl

Mon code est actuellement aime:

var services:Array = ['service1', 'service2', ...] 
for each (var name:String in services) { 
    var s:WebService = ServiceLocator.getInstance().getService(name) as WebService; 
    s.wsdl = wsdl; 
    s.loadWSDL(); 
} 

Toute aide sera appréciée.

+0

Tout d'abord, * n'utilisez pas cairngorm2 *. C'est un cadre horrible. Deuxièmement, pourquoi avez-vous besoin de créer un nouveau «service» pour chaque appel si vous avez exactement le même WSDL pour chacun? Vous avez juste besoin de charger le WSDL une fois (le service ne le fait-il pas automatiquement sur demande?). On dirait que vous le forcer à le faire manuellement ... –

+0

@J_A_X Ouais, je suis d'accord cairngorm suce mais c'est ce qui était là et ça marche pour moi après avoir piraté un tas de classes généralisées. Je ne crée pas un nouveau service, je charge simplement le fichier wsdl pour chaque service que j'ai défini. Mais puisque le wsdl n'est pas connu avant l'exécution, vous devez faire l'appel loadWSDL() manuellement car il ne le fera pas tout seul si vous devez définir l'emplacement wsdl dans actionscript. Fonctionnalité Dumb je pense. – Kevin

+0

Je ne comprends toujours pas le problème. Pourquoi avez-vous autant de services s'ils utilisent tous le même WSDL? pourquoi ne pas avoir le même WebService pour le même WSDL et changer l'opération que vous appelez en utilisant des commandes/délégués? –

Répondre

0

Si l'interface de chaque WSDL chargé est différente l'une de l'autre (c'est-à-dire qu'ils ont des opérations Web différentes), vous n'avez pas d'autre choix que de charger chaque interface/WSDL individuellement. Ils doivent être mis en cache du côté client afin que votre application puisse saisir les attributs et les fonctions qui représentent les services Web.

Si vous chargiez un wsdl et que votre code client n'invoquait rien, vous vous seriez vraiment désintéressé.

Questions connexes