Example: marketing

CONSOMMER DES SERVICES WEB EN RPG ILE

CONSOMMER DES SERVICES WEB EN RPG ILE. Les avantages des SERVICES Web ne sont plus d montrer aujourd'hui, ils sont devenus le nouveau point de convergence des acteurs du march de l'informatique qui en font un nouveau standard accept de tous. Le vieux r ve de faire communiquer en temps r el diff rents programmes issus de diff rentes plates-formes h t rog nes et ceci quelque soit les distances, est consomm . Que ce soit dans votre intranet pour faire communiquer vos diff rents applicatifs, ou sur internet pour acc der un service gratuit ou payant, ils sont l'avenir et leur impl mentation au c ur de l'IBM i est devenue une sin cure. De nombreux articles d finissent avec pr cision ce qu'est un Service Web, leur utilit et la technologie employ e, iSeries News a d'ailleurs publi d j de nombreux articles sur le sujet, les plus remarquables r dig s par Skott Klement et son projet open-source HTTPAPI.

d ˇailleurs visualiser son contenu avec DSPF ’/home/webservices/stockquote.wsdl’, nous pouvons maintenant passer à l ˇØtape suivante.

Tags:

  Webservices

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Transcription of CONSOMMER DES SERVICES WEB EN RPG ILE

1 CONSOMMER DES SERVICES WEB EN RPG ILE. Les avantages des SERVICES Web ne sont plus d montrer aujourd'hui, ils sont devenus le nouveau point de convergence des acteurs du march de l'informatique qui en font un nouveau standard accept de tous. Le vieux r ve de faire communiquer en temps r el diff rents programmes issus de diff rentes plates-formes h t rog nes et ceci quelque soit les distances, est consomm . Que ce soit dans votre intranet pour faire communiquer vos diff rents applicatifs, ou sur internet pour acc der un service gratuit ou payant, ils sont l'avenir et leur impl mentation au c ur de l'IBM i est devenue une sin cure. De nombreux articles d finissent avec pr cision ce qu'est un Service Web, leur utilit et la technologie employ e, iSeries News a d'ailleurs publi d j de nombreux articles sur le sujet, les plus remarquables r dig s par Skott Klement et son projet open-source HTTPAPI.

2 Le succ s de ce projet a fait r agir les quipes d'IBM Rochester. Ainsi, la V6R1 nous a apport . un lot important de nouveaut s concernant les SERVICES Web, dont nombre d'entre elles ont t port es en V5R4 par PTF. Nous poss dons dor navant en V5R4 un serveur de Service Web int gr l'OS qui vous permettra en quelques clics de transformer un programme ILE RPG ou COBOL en Service Web tout en s'affranchissant de d ployer Websph re Application Server, mais nous traiterons ce sujet dans un autre article. La nouveaut qui nous concerne, le portage du projet Apache Fondation Axis C++ version dans l'IBM i. Axis est un Framework open-source qui offre en outre la possibilit de g n rer automatiquement des WSDL correspondant des classes Java ou inversement cr er des classes Java, C ou C++ sur la base d'un WSDL, et c'est ce dernier point qui va nous int resser dans cet article.

3 Ainsi, toute la complexit d'acc s au programme distant avec le protocole HTTP travers des messages SOAP est masqu e dans ces classes proxy. Il nous reste plus qu' appeler ces programmes g n r s pour CONSOMMER un Service Web comme indiqu sur la figure 1. RPG LE. C/C++ stubs Client Axis SOAP Serveur COBOL LE. Figure 1. Ainsi, les tapes n cessaires pour CONSOMMER un service web sont : R cup ration du WSDL dans l'IFS. G n ration des Stubs C/C++. Ecriture du programme Client Compilation et liage des modules Pour conna tre les limitations l'Axis C++ dans l'IBM i, je vous conseille de visualiser le situ dans le r pertoire /Qibm/ProdData/OS/ webservices /V1/Client/ . Extraits : WSDL is the only supported WSDL level.

4 SOAP is the only supported over-the-wire protocol The response from the Server must be in UTF-8 format . R cup ration dans l'IFS du WSDL. WSDL est un fichier XML qui contient l'emplacement du Service Web sur la toile ainsi que les op rations (m thodes, param tres et valeurs de retour) que le service propose. Prenons un exemple avec le Service Web gratuit StockQuote, permettant d'interroger directement la bourse de NewYork (NYSE), vous pouvez le tester directement en ligne sur le lien suivant : Pour le tester, on saisi en ligne le code boursier IBM et on obtient en r ponse le message XML (figure 2). <?xml version=" " encoding="utf-8" ?>. <string xmlns=". "> <StockQuotes> <Stock> <Symbol>IBM</. Symbol> <Last> </Last> <Date>11/17/2009</Date> <Time>4:00p m</Time> <Change>+ </Change> <Open> </Open> <High>12.

5 </High> <Low> </Low> <Volume>7751233</Volume> <MktC. ap> </MktCap> <PreviousClose> </PreviousClose> <Percent ageChange>+ </PercentageChange> <AnnRange> - </AnnRange> <Earns> </Earns> <P-E> </P- E> <Name>INTL BUSINESS MAC</Name> </Stock> </StockQuotes>. </string>. Figure 2. On r cup re le fichier WSDL sur et on le place dans un r pertoire de l'IFS ex : /home/ webservices / sous le nom de (exemple pour la suite de cet article). Nous avons constat que le service web r pondait bien en le testant directement en ligne, avons r cup r son WSDL dans l'IFS (vous pouvez d'ailleurs visualiser son contenu avec DSPF '/home/ ', nous pouvons maintenant passer l' tape suivante. G n ration automatique des Stubs en C/C++. Nous allons utiliser la classe Java livr e par Apache Axis afin qu'il nous g n re tous les programmes clients n cessaires pour CONSOMMER ce Service Web.)

6 Nous ne d taillerons pas ici tous les param tres attendus, mais vous pourrez visualiser l'aide en ligne de cette commande en tapant -h sous QSH dans le r pertoire /QIBM/ProdData/OS/ webservices /V1/client/ BIN/. QSH Command Entry /QIBM/ProdData/OS/ webservices /V1/client/ -lc 1. -o/home/ webservices 2. /home/ 3. Code generation completed. Generated files in directory '/home/ webservices '. Figure 3. A l'issu de la commande (figure 3), des sources de programmes en C (si -LC n'avait pas t . indiqu au param tre du C++ aurait t g n r ) ont t cr s dans le r pertoire . partir du WSDL fourni en . Avec notre WSDL, on r cup re et En regardant les d claratives dans le .h on peut voir : 1. Chaque Service Web poss de 4 fonctions standards comme2montr en de la Figure 4.

7 Ainsi qu'une ou plusieurs fonctions d'appel du service lui-m me. Figure 4. Le Get___Stub permet d'initialiser et ouvrir la connexion, Destroy___Stub de la fermer, Get___Status de tester la derni re op ration effectu e et Set___ExceptionHandler de g rer les erreurs SOAP. Pour CONSOMMER notre service web depuis notre RPG, il nous faudra au minimum appeler les fonctions prototyp es Get_StockQuoteSoap_stub(), GetQuote() ainsi que la fonction Destroy_StockQuoteSoap_stub(). Mais avec quels param tres ? AXISCHANDLE get_StockQuoteSoap_stub(const char* pchEndPointUri);. Cette fonction C re oit en param tre un char* c'est- -dire un pointeur et renvoie aussi un pointeur travers le Typdef AXISCHANDLE (il s'agit en fait du handle de la connexion tablie).

8 Void destroy_StockQuoteSoap_stub(AXISHANDLE pStub);. Cette fonction re oit en param tre le handle (renvoy par Get___Stub) avec lequel la connexion a t tablie, par contre ne renvoie aucune valeur (void). xsdc__string GetQuote(AXISCHANDLE pStub, xsdc__string Value0);. Cette fonction est la plus importante car il s'agit su service en lui-m me et les param tres varient pour chaque Service Web invoqu . Elle re oit le handle de la connexion (pointeur). ainsi qu'une variable de type xsdc__string et renvoie aussi un xsdc__string en retour. Mais ce type n'est pas standard, c'est un type d fini dans Axis. S'agit-il d'un char (string). comme il semble le para tre ? Pour cela il faut regarder dans /QIBM/ProdData/OS/ webservices /V1/client/ include/ , il s'agit en fait aussi d'un pointeur.

9 Ecriture du programme Client Maintenant que nous connaissons les fonctions appeler ainsi que les bons param tres, nous pouvons crire notre RPG ILE pour CONSOMMER notre premier Service Web. *--------------------------------------- ----------------------------- * Prototypes et interfaces *--------------------------------------- ----------------------------- DgetStub PR * ExtProc('get_StockQuoteSoap_stub'). D pEndpoint * Value *. DdestroyStub PR ExtProc('destroy_StockQuoteSoap_Stub'). D AxisHandle * Value *. DWebservice PR * ExtProc('GetQuote'). D AxisHandle * Value D Parameter1 * Value *. *--------------------------------------- ----------------------------- * D clarations diverses. *--------------------------------------- ----------------------------- D pResultat S *.

10 D Resultat S 32565 Varying D WsStubP S *. *--------------------------------------- ----------------------------- * Web service logic. The code will attempt to invoke the Web Service *--------------------------------------- ----------------------------- /FREE. // Get a Web service stub. The host and port for the endpoint may need // to be changed to match host and port of Web service. You can pass // *NULL to getStub() if the endpoint in the WSDL file is correct. WsStubP = getStub(*NULL); . Parameter = 'IBM' + x'00';. pResultat = WebService(WsStubP : %addr(Parameter)); . Resultat = %str(pResultat);. destroyStub(WsStubP); . *inlr = *on;. Figure 5. Ouverture de la connexion, r cup ration du handle de connexion dans un pointeur.


Related search queries