IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques C++ Discussion :

Deploiement "CGI" d'une application GSoap basique


Sujet :

Bibliothèques C++

  1. #1
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut Deploiement "CGI" d'une application GSoap basique
    Bonjour,

    malgré mes recherches, je ne trouve pas de solution au déploiement 'CGI' (dans Tomcat) de l'application "calc" des samples livrés avec gSoap 2.7.14.

    Voici le résultat:
    D:\gsoap_2.7.14\gsoap-2.7\gsoap\samples\calc>calcclient add 2 3
    Error 14 fault: SOAP-ENV:Client [no subcode]
    "Data required for operation"
    Detail: [no detail]

    Pour information ce que j'ai fait:
    [1] activer CGI dans Tomcat
    [a] decommenter dans conf/web.xml le bloc <servlet-name>cgi</servlet-name>
    [b] decommenter le bloc de servlet mapping pour cgi (débute par) <servlet-mapping>
    [c] dans /server/lib renommer le fichier servlets-cgi.renametojar par servlets-cgi.jar
    [d] creer le fichier "webapps\mycgi\WEB-INF\cgi" et y créer un fichier time.cgi avec le code suivant:
    #!/usr/bin/perl

    print "Content-type: text/html\n\n";

    $now = localtime();
    print "<h1>It is $now</h1>";

    L'appel de http://localhost:8080/mycgi/cgi-bin/time.cgi devrait fournir une réponse type: It is Thu Nov 5 13:54:18 2009

    -> cool, cgi fonctionne !

    [2] Compiler le sample "calc" de GSoap.

    [a] adapter le sample à son propre environnement
    Pour ce faire, j'ai tout d'abord remplacé dans le fichier calc.h les lignes:
    //gsoap ns service namespace: http://websrv.cs.fsu.edu/~engelen/calc.wsdl
    //gsoap ns service location: http://websrv.cs.fsu.edu/~engelen/calcserver.cgi

    par

    //gsoap ns service namespace: http://localhost:8080/mycgi/calc.wsdl
    //gsoap ns service location: http://localhost:8080/mycgi/cgi-bin/calcserver.cgi

    [b] créer un .bat qui lance la création des fichiers et la compil:
    soapcpp2 -L -x -c calc.h
    pause
    g++ -DDEBUG -o calcclient calcclient.c stdsoap2.c soapC.c soapClient.c -lws2_32
    pause
    g++ -DDEBUG -o calcserver.cgi calcserver.c stdsoap2.c soapC.c soapServer.c -lws2_32

    [c] copier calc.wsdl vers le répertoire mrentionné dans [2][a] et faire de même avec calcserver.cgi.

    VOILA, on devrait pouvoir lancer le client sans problème, seulement voilà ... il manque encore quelque chose, le WSDL dans le bon répertoire (???) ou je ne sais, je ne trouve pas. Si quelqu'un avait une idée ce serait TIP-TOP.

    Juste pour autre info, lorsque j'appelle directement "http://localhost:8080/mycgi/cgi-bin/calcserver.cgi" je recois une page blanche dans mon navigateur et non une page avec une enveloppe SOAP du style:

    <SOAP-ENV:Envelope>
    <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Fault>
    <faultcode>SOAP-ENV:Server</faultcode>
    <faultstring>End of file or no input</faultstring>
    <detail/>
    </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

    ... donc mon cgi ne veut pas se lancer.

    Mon Tomcat est une version 5.5.23, est-ce là un problème d'activation du langage C (Perl par défaut) dans la conf de Tomcat ? Si oui, comment ajouter ce langage ?

    Merci pour tout aide.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Je ne sais pas si cela peut t'aider mais il y a un tutoriel gSoap par r0d.

  3. #3
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut
    Bonjour,

    merci pour le tutoriel, cependant, je l'ai déjà consulté bien entendu Il est très bien, mais il ne fait pas mention du déploiement CGI de l'application. On trouve en effet pas mal de docs sur la création d'un serveur en stand-alone (un process qui boucle sans fin sur un port on va dire), mais quasimment rien sur le déploiement CGI et la doc GSoap officielle se contente de dire qu'il faut copier l'exécutable produit dans cgi-bin et le renommer .cgi. Jusque là tout va bien en théorie, mais en pratique non.

  4. #4
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut
    Bonjour,

    problème résolu ... après une analyse des paquets SOAP (option -DDEBUG de la compil g++) je me rend compte que le serveur ne recoit rien (les fichiers send, recv et test.log n'ont pas été générés côté serveur). Donc c'est que Tomcat ne contacte pas la ressource pour la lancer ... faute de savoir comment lancer mon calcserver.cgi.

    La solution est donc simple: dans la configuration (fichier conf/web.xml) du CGI, donnez à Tomcat le droit de lancer autre chose que du Perl par défaut avec le paramètre "executable" selon:

    <init-param>
    <param-name>executable</param-name>
    <param-value></param-value>
    </init-param>
    Attention, ce la donne le droit d'exécuter n'importe quoi ... mieux vaut spécifier le language c, c++, etc ... mais pour des tests internes ca sauve une matinée de migraines !

    Du coup côté serveur j'ai bien la création de mes fichiers de trace exemples les fichiers recus et envoyés:

    REQUETE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="urn:calc"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><ns:add><a>1</a><b>32</b></ns:add></SOAP-ENV:Body></SOAP-ENV:Envelope>

    REPONSE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Status: 200 OK
    Server: gSOAP/2.7
    Content-Type: text/xml; charset=utf-8
    Content-Length: 465
    Connection: close
     
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="urn:calc"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><ns:addResponse><result>33</result></ns:addResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>Status: 200 OK
    Server: gSOAP/2.7
    Content-Type: text/xml; charset=utf-8
    Content-Length: 466
    Connection: close

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut
    Bonjour,

    je travailles sur un projet avec gSOAP en ce moment et tes explications me sont bien utiles. Par contre j'aurais une question à te poser, où es ce que tu as trouvé ton fichier wsdl pour l'application "calc" des exemples?

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par défaut
    Tiens, j'ai loupé cette discussion.

    Au cas où, j'en profite pour poser une petite question: une fois que tu as généré ton serveur SOAP et qu'il est installé en tant que cgi (par exemple à l'aide de ce tuto), comment fait-on pour l'appeler depuis notre page HTML?

    Concrètement, si j'ai un serveur Apache bien configuré, avec mon_serveur.exe présent dans le repertoire cgi-bin, comment, à partir de mon code HTML, je fais pour appeler une fonction de mon_serveur.exe?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut
    Par un formulaire HTML du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form method="get" action="http://www.mon-site.com/cgi-bin/script.cgi">
    ...
    </form>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [BlackBerry] Créer une application 3D basique pour BlackBerry 10
    Par LittleWhite dans le forum Mobiles
    Réponses: 0
    Dernier message: 20/06/2013, 22h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo