script installation des web services

configuration Apache, Zend et PHP , Web services
Répondre
NicolasG
Messages : 17
Enregistré le : mer. 09 mars 2016, 09:58:18
Localisation : Lausanne, Suisse

script installation des web services

Message par NicolasG »

Bonjour,

dans le cadre de notre intégration continue, je dois mettre en oeuvre le script installWebService.sh pour des services REST.

hors lorsque je tente de faire une install, il ne me crée pas le WS tel que je le souhaiterai.
voici mon script
installwebservice.sh -server websrvf1d -service calcDouble -userid VACONNECT -programObject /qsys.lib/VADEVGRN.LIB/calcdbl.PGM -p
cml /home/grn/calcdbl.PCML -serviceType *REST -detectFieldLengths -propertiesFile /home/grn/calcdbl.properties -printErrorDetails
IWS00102I - Command completed successfully.


voici mon pcml
<pcml version="6.0">
<!-- RPG program: CALCDBL -->
<!-- created: 2017-10-19-15.14.00 -->
<!-- source: /home/grn/qrpglesrc/calcdbl.rpgle -->
<!-- 6 -->
<program name="CALCDBL">
<data name="nbrIn" type="int" length="2" precision="15" usage="input" />
<data name="httpStatus" type="int" length="4" precision="31" usage="output" />
<data name="nbrOut" type="int" length="4" precision="31" usage="output" />
</program>
</pcml>


voici mon fichier properties
uri.path.template=/
calcDouble.uri.path.template=
calcDouble.wrap.input.parameters=true
calcDouble.wrap.output.parameter=true
calcDouble.http.request.method=POST
calcDouble.consumes=*/*
calcDouble.produces=application/json
calcDouble.response.code.parameter=httpStatus
calcDouble.nbrIn.usage=input
calcDouble.httpStatus.usage=output
calcDouble.nbrOut.usage=output


j'ai suivi la doc mais ça ne fonctionne pas
j'obtiens toujours un WS créé en méthode GET. mon httpStatus n'est pas utilisé

bref, où ai-je bien pu me tromper ?

Merci beaucoup

N. GRULIER


PS et voici mon programme très simple:
**free
ctl-opt actgrp(*caller)
;

// interface , signature
dcl-pi *n ;
nbrIn int(5) ;

httpStatus int(10) ;
nbrOut int(10) ;
END-PI;

nbrout = nbrin * 2 ;
httpStatus = 0200 ;

*inlr = *on ;
// fin PGM
_________
N. GRULIER

NicolasG
Messages : 17
Enregistré le : mer. 09 mars 2016, 09:58:18
Localisation : Lausanne, Suisse

Message par NicolasG »

Réponse trouvé grace à developerWork :
https://www.ibm.com/developerworks/ibmi ... index.html
menu >>> "Allow RESTful services to return user-defined media types"

Selon la méthode utilisée (get ou post dans mon cas), il faut mapper ou non les paramètres d'entrée avec les inputs web .

>>>>> pour POST, on peut écrire
<PROC NAME>.wrap.input.parameters=true
cela suffit. il n'est pas nécessaire de rajouter


>>>>> pour GET:
<PROC name>.wrap.input.parameters=false

et ajouter en fin de fichier properties:
<PROC name>.nbrIn.usage=input
<PROC name>.nbrIn.queryparam=myNumber
pour mapper le nom nbrIn du programme avec la variable MyNumber qui sera dans l'URL

l'utilisation des minuscule dans le fichier properties semble être à respecter.

Ensuite pour installer le WS sur le serveur, je relance la commande via qsh :

> cd /qibm/proddata/os/webservices/bin
$
> installwebservice.sh -server WSANDBOX -service Calcul_DOUBLE -programObject /qsys.lib/<bibliothèque>.lib/<mon programme>.pgm -servicetype *REST -pcml <chemin IFS du fichier PCML (si PCML externe)> -propertiesfile <chemin IFS du fichier properties> -detectFieldLengths -userid <userid>


PS: nous utilisons un PCML externe car notre version cobol ne permet pas de faire du PCML include et de gérer le CAMEL case comme en RPG.

en espérant avoir été concret.

Nicolas
_________
N. GRULIER

Répondre