Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 04-06-2008 10:42:17

matock  
Membre
Date d'inscription: 27-07-2007
Messages: 6
Pépites: 59
Banque: 0

Générer ou modifier un proxy web service dynamiquement à l'exécution

Bonjour à tous,

Je cherche une astuce pour pouvoir générer et/ou modifier dynamiquement à l'exécution le proxy d'accès à un web service.

La raison est la suivante. Les applications et bases de données sont déployées sur 3 environnements d'architecture identique : DEV, TEST et PROD. Les développements se font bien entendu sur DEV sont déployés successivement sur TEST et PROD. L'application exécutée en DEV utilise la base de données de DEV et les web services du serveur de DEV. Idem pour les 2 autres. Il n'y a pas, et il ne doit pas y avoir, d'interactions entre les environnements.

Pour consommer un web service MyWS, je dois construire un projet p_MyWS, lequel génère un proxy ws_MyWS. Ces étapes doivent se faire par le développeur au travers de PB. Or mon web service est déployé sur mes 3 environnements, et bien entendu avec le même nom. Le proxy généré en DEV pointe sur une URL de DEV. A l'exécution, il faut donc pouvoir modifier cette URL en fonction du contexte DEV, TEST ou PROD pour appeler le bon web service.

L'idéal serait de pouvoir générer à la volée le proxy, ou au minimum de pouvoir modifier son URL. Je n'ai trouvé aucune méthode pour ça. La doc précise que les propriétés du projet comme du proxy sont readonly. J'ai aussi pensé à exporter, modifier, puis réimporter dynamiquement mais PB ne permet pas d'exporter un objet proxy et de toute façon ne permet de réimporter que des datawindows.

Le seule méthode "tordue" que j'ai trouvé c'est de :
- créer 3 projets p_MyWS_dev, p_MyWS_test et p_MyWS_prod
- à partir du premier : mettre l'URL de DEV, générer le proxy ws_MyWS, export le proxy, renommer le nom en ws_MyWS_dev, le réimporter puis supprimer ws_MyWS
- faire pareil avec les 2 autres

En définitive j'obtiens :
- 3 projets p_MyWS_dev, p_MyWS_test et p_MyWS_prod
- 3 proxy ws_MyWS_dev, ws_MyWS_test et ws_MyWS_prod

...et dans mon code je déclare les 3 proxy mais je n'instancie et n'utilise qu'un seul des 3 en fonction du contexte. Ca marche mais c'est un peu pénible et pas très propre.

Quelqu'un a-t'il une meilleure méthode ?

Hors ligne

 

#2 06-06-2008 09:04:53

DAV  
Membre
Lieu: Mâcon
Date d'inscription: 13-09-2007
Messages: 5
Pépites: 22
Banque: 0

Re: Générer ou modifier un proxy web service dynamiquement à l'exécution

Bonjour Matock,

Voila ce que j'ai fait en utilisant un seul proxy généré.

Code: pb

soapconnection g_sc

n_webservice_definition g_myservice[]

for i = 1 to g_ds_site.rowcount()

err = g_sc.createinstance(g_myservice[i], &
                          "n_webservice_definition",&
                          "http://"+string(g_ds_site.object.ip[i])+"/webservice_definition/n_webservice_definition.asmx")  

next



Hors ligne

 

#3 06-06-2008 09:27:13

matock  
Membre
Date d'inscription: 27-07-2007
Messages: 6
Pépites: 59
Banque: 0

Re: Générer ou modifier un proxy web service dynamiquement à l'exécution

Merci DAV, ça rejoint ce que j'ai découvert hier soir : le 3ième paramètre de CreateInstance() permet de passer dynamiquement une URL. Cette fonctionnalité est assez mal documentée et j'étais passé à côté.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22