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

Ruby on Rails Discussion :

faire un webservice


Sujet :

Ruby on Rails

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut faire un webservice
    Bonjour,
    je suis entrain de réaliser un webservice avec ruby on rails, mais je rencontre des problèmes pour créer le client qui va accéder au web service en SOAP.
    J'essais d'afficher l'ensemble des données d'une table customers (id,name,tel,...)
    J'ai crée, mon model, et mon web_service customer :

    J'ai deux méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    api_method :listid, :expects => [:int], :returns => [Customer]
    api_method :listall, :returns => [[:int]]
    listall m'affiche tous les id et listid prend en entré ces id et affiche les données Customer.

    J'ai fait un petit client en ruby

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    require 'soap/wsdlDriver'
    wsdl = "http://localhost:3000/customer/service.wsdl"
    customer_server = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
    customer_server.listall.map do |id|
    customer = customer_server.listid(id)
    puts "le client est #{customer.nom}, rtc : #{customer.rtc}, commercial : #{customer.commercial}"
    Cela fonctionne mais c'est un peu lent.
    Je voudrais faire un client sous ruby on rails directement,
    j'ai fait un controller client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    web_client_api :customer,
                    :soap,
                    "http://localhost:3000/customer/api"
      def test
            customer.listall.map do |id|
                    @customers = customer.listid(id)
            end
      end
    et dans la view de client/test
    j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <% for customer in @customers%>
    <p> Client:<%= customer.nom %> rtc: <%= customer.rtc %> commercial <%= customer.commercial %> </p>
    <% end %>
    Mais j'obtient en réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     Timeout::Error in ClientController#test
     
    execution expired
     
    RAILS_ROOT: /var/www/fabdev/config/..
    Application Trace | Framework Trace | Full Trace
     
    /usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill'
    /usr/lib/ruby/1.8/timeout.rb:56:in `timeout'
    /usr/lib/ruby/1.8/timeout.rb:76:in `timeout'
    /usr/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
    /usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
    /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline'
    /usr/lib/ruby/1.8/net/http.rb:2020:in `read_status_line'
    /usr/lib/ruby/1.8/net/http.rb:2009:in `read_new'
    /usr/lib/ruby/1.8/net/http.rb:1050:in `request'
    /usr/lib/ruby/1.8/net/http.rb:845:in `post'
    /usr/lib/ruby/1.8/soap/netHttpClient.rb:93:in `post'
    /usr/lib/ruby/1.8/soap/netHttpClient.rb:116:in `start'
    /usr/lib/ruby/1.8/net/http.rb:543:in `start'
    /usr/lib/ruby/1.8/soap/netHttpClient.rb:115:in `start'
    /usr/lib/ruby/1.8/soap/netHttpClient.rb:92:in `post'
    /usr/lib/ruby/1.8/soap/streamHandler.rb:170:in `send_post'
    /usr/lib/ruby/1.8/soap/streamHandler.rb:109:in `send'
    /usr/lib/ruby/1.8/soap/rpc/proxy.rb:170:in `route'
    /usr/lib/ruby/1.8/soap/rpc/proxy.rb:141:in `call'
    /usr/lib/ruby/1.8/soap/rpc/driver.rb:178:in `call'
    (eval):6:in `listall'
    /var/www/fabdev/app/controllers/client_controller.rb:6:in `test'
    /usr/bin/mongrel_rails:19:in `load'
    /usr/bin/mongrel_rails:19
    Si j'entre dans mon navigateur directement http://fabdev.tt/customer/api
    j'obtient
    Alors je ne sais pas trop d'où vient le problème.
    Si quelqu'un pouvait m'aider.
    Voilà le log complet de development.log
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    Processing ClientController#test (for 127.0.0.1 at 2007-12-18 16:42:08) [GET]
      Session ID: de443f915b79b9b4e42f70fe666fda69
      Parameters: {"action"=>"test", "controller"=>"client"}
      Customer Columns (0.015421)   SHOW FIELDS FROM customers
     
     
    Timeout::Error (execution expired):
        /usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill'
        /usr/lib/ruby/1.8/timeout.rb:56:in `timeout'
        /usr/lib/ruby/1.8/timeout.rb:76:in `timeout'
        /usr/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
        /usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
        /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline'
        /usr/lib/ruby/1.8/net/http.rb:2020:in `read_status_line'
        /usr/lib/ruby/1.8/net/http.rb:2009:in `read_new'
        /usr/lib/ruby/1.8/net/http.rb:1050:in `request'
        /usr/lib/ruby/1.8/net/http.rb:845:in `post'
        /usr/lib/ruby/1.8/soap/netHttpClient.rb:93:in `post'
        /usr/lib/ruby/1.8/soap/netHttpClient.rb:116:in `start'
        /usr/lib/ruby/1.8/net/http.rb:543:in `start'
        /usr/lib/ruby/1.8/soap/netHttpClient.rb:115:in `start'
        /usr/lib/ruby/1.8/soap/netHttpClient.rb:92:in `post'
        /usr/lib/ruby/1.8/soap/streamHandler.rb:170:in `send_post'
        /usr/lib/ruby/1.8/soap/streamHandler.rb:109:in `send'
        /usr/lib/ruby/1.8/soap/rpc/proxy.rb:170:in `route'
        /usr/lib/ruby/1.8/soap/rpc/proxy.rb:141:in `call'
        /usr/lib/ruby/1.8/soap/rpc/driver.rb:178:in `call'
        (eval):6:in `listall'
        /usr/lib/ruby/gems/1.8/gems/actionwebservice-1.2.6/lib/action_web_service/client/soap_client.rb:63:in `send'
        /usr/lib/ruby/gems/1.8/gems/actionwebservice-1.2.6/lib/action_web_service/client/soap_client.rb:63:in `perform_invocation'
        /usr/lib/ruby/gems/1.8/gems/actionwebservice-1.2.6/lib/action_web_service/client/base.rb:15:in `method_missing'
        /var/www/fabdev/app/controllers/client_controller.rb:6:in `test'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:1101:in `send'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:1101:in `perform_action_without_filters'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/filters.rb:696:in `call_filters'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/filters.rb:688:in `perform_action_without_benchmark'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
        /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/rescue.rb:83:in `perform_action'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:435:in `send'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:435:in `process_without_filters'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/filters.rb:684:in `process_without_session_management_support'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/session_management.rb:114:in `process'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:334:in `process'
        /usr/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/dispatcher.rb:41:in `dispatch'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/rails.rb:76:in `process'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/rails.rb:74:in `synchronize'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/rails.rb:74:in `process'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:155:in `process_client'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:154:in `each'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:154:in `process_client'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:281:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:281:in `initialize'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:281:in `new'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:281:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:264:in `initialize'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:264:in `new'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:264:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/configurator.rb:282:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/configurator.rb:281:in `each'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/configurator.rb:281:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/mongrel_rails:128:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/command.rb:212:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/mongrel_rails:281
        /usr/bin/mongrel_rails:19:in `load'
        /usr/bin/mongrel_rails:19
     
     
    Rendering /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/templates/rescues/layout.rhtml (500 Internal Error)
     
     
    Processing CustomerController#api (for 127.0.0.1 at 2007-12-18 16:43:08) [POST]
      Session ID: f14fa72a3099eb916ea1af934608def9
      Parameters: {"action"=>"api", "controller"=>"customer"}
      Customer Columns (0.009901)   SHOW FIELDS FROM customers
      Customer Load (0.108314)   SELECT * FROM customers 
     
    Web Service Request: Listall() Entrypoint: api
      <?xml version="1.0" encoding="utf-8" ?>
      <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <env:Body>
          <n1:Listall xmlns:n1="urn:ActionWebService"
              env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
          </n1:Listall>
        </env:Body>
      </env:Envelope>
     
    Web Service Response (0.359222): => [361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593]
      <?xml version="1.0" encoding="UTF-8" ?>
      <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <env:Body>
          <n1:ListallResponse xmlns:n1="urn:ActionWebService"
              env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <return n2:arrayType="xsd:int[233]"
                xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/"
                xsi:type="n2:Array">
              <item>361</item>
              <item>362</item>
              <item>363</item>
              <item>364</item>
    ....
              <item>593</item>
            </return>
          </n1:ListallResponse>
        </env:Body>
      </env:Envelope>
    Sending data 
    Completed in 0.39067 (2 reqs/sec) | Rendering: 0.00017 (0%) | DB: 0.13364 (34%) | 200 OK [<a href="http://localhost/customer/api]" target="_blank">http://localhost/customer/api]</a>
    Merci beaucoup.
    Fabien.

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Bonjour

    Tu as bien redéfini tes API coté client ?

    Sinon, pourquoi ne pas réutiliser ton code Ruby dans ton appli Rails ? c'est encore ce que j'ai trouvé de plus simple
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par titoumimi Voir le message
    Bonjour

    Tu as bien redéfini tes API coté client ?

    Sinon, pourquoi ne pas réutiliser ton code Ruby dans ton appli Rails ? c'est encore ce que j'ai trouvé de plus simple
    Euh ça veut dire quoi redéfini tes API côté client?
    côté client j'ai juste créé un controller et une viewça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class ClientController < ApplicationController
    web_client_api :customer,
                    :soap,
                    "http://localhost:3000/customer/api"
      def test
            customer.listall.map do |id|
                    @customers = customer.listid(id)
            end
      end
    end
    Sinon pour votre 2ème proposition, je fais ça comment?

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    J'aurai aussi une question concernant les perf web service sur ruby on rails.
    Je ne sais pas d'où ça vient, mais c'est super lent de récuper une liste de données par web service.
    Avec ma méthode (j'en ai pas trouvé d'autre),
    il récupère les ID avec listall, et il entre chaque id dans listid(int).
    En gros quand je veux afficher ma liste de clients de 500clients,
    c'est équivalent à 500
    select * from customers where id='int';

    Dans les logs de developement.log,
    il me dit pour une requete SOAP envoyé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Completed in 0.07398 (13 reqs/sec) | Rendering: 0.00018 (0%) | DB: 0.00932 (12%) | 200 OK [http://fabdev.tt/customer/api]
    Donc il lui faut 35s pour afficher l'ensemble de mes données
    Ou j'ai vraiment mal codé un truc quelque part.

    Merci de m'éclairer un peu.

    Fabien.

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Bonjour,
    j'ai réussi à faire une nouvelle fonction qui renvoi dans un tableau l'ensemble des données de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    api_method :listall, :expects => [:int], :returns => [[Customer]]
    et dans le controller ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def listall(ids)
            #Customer.find(:all).map{ |customer| customer.id }
            Customer.find(:all)
    mais mon client fait sous ruby on rails, ne fonctionne toujours pas!!!

    J'ai fait un petit client en perl qui me récupère mes valeurs et c'est ok.
    Le serveur met 5.3s pour renvoyer 232 customers!

    Quelqu'un pourrait m'expliquer comment faire un client pour mon web service sous ruby on rails.

    Merci.

  6. #6
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Bonjour

    Pour la deuxième méthode, c'est tout simple...

    Dans ton controlleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def mon_action
       require 'soap/wsdlDriver'
       wsdl = "http://localhost:3000/customer/service.wsdl"
       customer_service = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
     
       @customers = customer_service.listall()
    end
    Par contre, petite "erreur" dans ta dernière webméthode, tu n'as plus besoin de lui passer un id
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Merci pour la réponse, mais j'obtient toujours ce magnifique message :

    execution expired

    De toute façon quand je l'attaque avec mon client perl,les données mettes 5.6s à être transmise, je trouve ça énorme!!! non

    Alors que j'ai un controller qui fait du scaffold sur cette base et ça répond directe.

  8. #8
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Forcément, passer par un webservice est plus long qu'attaquer la DB en direct :

    - tu commence par récupérer un WSDL (quelques échanges tout de même)
    - Ruby te mappe ton WSDL sous forme d'un objet
    - tu relance une requête à ton webservice qui lui se charge de récupérer les données dans la DB, puis te les renvoies
    - Ruby re-mappe la réponse du webservice sous forme d'objet

    Forcément, c'est beaucoup plus long, surtout quand tu épluches tes logs, une réponse de webservices, c'est verbeux, faut bien les transmettre les données...

    Sinon, je ne comprends pas pourquoi tu as cette erreur, je me sers de cette méthode pour attaquer les webservices amazon sans aucun soucis...
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    J'ai peut-être une idée.
    Du fait que mon c'est ruby on rails qui envoi la requête client et que c'est aussi lui qui gère la réponse serveur qui prend beaucoup de temps,
    il met de trop de temps à répondre et il atteint un timeout d'attente.
    C'est dommage, j'ai bien aimé ruby, et ruby on rails.
    vais-je devoir faire ça en java ou .net comme les autres .

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Le problème ne vient pas de là.

    J'ai uniquement mis ça comme methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            def test3
                    require 'soap/wsdlDriver'
                    wsdl = "http://localhost:3000/customer/service.wsdl"
                    customer_service = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
            #       return $client=customer_service.Exist(500)
                    return $customer=4
            end
    Donc c'est au niveau du customer_service =SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver

    que ça plante
    voilà le log complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    Processing CustomerController#wsdl (for 127.0.0.1 at 2007-12-19 13:05:29) [GET]
      Session ID: 3618b1361d4ad53e926e8efa5ca358c1
      Parameters: {"action"=>"wsdl", "controller"=>"customer"}
      ^[[4;35;1mCustomer Columns (0.007240)^[[0m   ^[[0mSHOW FIELDS FROM customers^[[0m
    Sending data
    Completed in 0.17608 (5 reqs/sec) | Rendering: 0.00014 (0%) | DB: 0.00724 (4%) | 200 OK [http://localhost/customer/service.wsdl]
     
     
    Processing Client2Controller#test3 (for 127.0.0.1 at 2007-12-19 13:05:29) [GET]
      Session ID: 13b488545f1d2c5a2b980823f3d10e2d
      Parameters: {"action"=>"test3", "controller"=>"client2"}
     
     
    Timeout::Error (execution expired):
        /usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill'
        /usr/lib/ruby/1.8/timeout.rb:56:in `timeout'
        /usr/lib/ruby/1.8/timeout.rb:76:in `timeout'
        /usr/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
        /usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
        /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline'
        /usr/lib/ruby/1.8/net/http.rb:2020:in `read_status_line'
        /usr/lib/ruby/1.8/net/http.rb:2009:in `read_new'
        /usr/lib/ruby/1.8/net/http.rb:1050:in `request'
        /usr/lib/ruby/1.8/net/http.rb:772:in `get'
        /usr/lib/ruby/1.8/soap/netHttpClient.rb:105:in `get_content'
        /usr/lib/ruby/1.8/soap/netHttpClient.rb:116:in `start'
        /usr/lib/ruby/1.8/net/http.rb:543:in `start'
        /usr/lib/ruby/1.8/soap/netHttpClient.rb:115:in `start'
        /usr/lib/ruby/1.8/soap/netHttpClient.rb:104:in `get_content'
        /usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:64:in `fetch'
        /usr/lib/ruby/1.8/wsdl/xmlSchema/importer.rb:30:in `import'
        /usr/lib/ruby/1.8/wsdl/importer.rb:18:in `import'
        /usr/lib/ruby/1.8/soap/wsdlDriver.rb:124:in `import'
        /usr/lib/ruby/1.8/soap/wsdlDriver.rb:28:in `initialize'
        /var/www/fabdev/app/controllers/client2_controller.rb:20:in `new'
        /var/www/fabdev/app/controllers/client2_controller.rb:20:in `test3'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:1101:in `send'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:1101:in `perform_action_without_filters'
     
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/filters.rb:696:in `call_filters'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/filters.rb:688:in `perform_action_without_benchmark'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
        /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/benchmarking.rb:66:in `perform_action_without_rescue'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/rescue.rb:83:in `perform_action'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:435:in `send'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:435:in `process_without_filters'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/filters.rb:684:in `process_without_session_management_support'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/session_management.rb:114:in `process'
        /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/base.rb:334:in `process'
        /usr/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/dispatcher.rb:41:in `dispatch'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/rails.rb:76:in `process'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/rails.rb:74:in `synchronize'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/rails.rb:74:in `process'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:155:in `process_client'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:154:in `each'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:154:in `process_client'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:281:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:281:in `initialize'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:281:in `new'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:281:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:264:in `initialize'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:264:in `new'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel.rb:264:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/configurator.rb:282:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/configurator.rb:281:in `each'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/configurator.rb:281:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/mongrel_rails:128:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/../lib/mongrel/command.rb:212:in `run'
        /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.1/bin/mongrel_rails:281
        /usr/bin/mongrel_rails:19:in `load'
        /usr/bin/mongrel_rails:19
     
     
    Rendering /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_controller/templates/rescues/layout.rhtml (500 Internal Error)
    Processing CustomerController#wsdl (for 127.0.0.1 at 2007-12-19 13:06:30) [GET]
      Session ID: eeef2493d5e5bd3168b38b06f75938d9
      Parameters: {"action"=>"wsdl", "controller"=>"customer"}
      ^[[4;36;1mCustomer Columns (0.009561)^[[0m   ^[[0;1mSHOW FIELDS FROM customers^[[0m
    Sending data
    Completed in 0.24834 (4 reqs/sec) | Rendering: 0.00019 (0%) | DB: 0.00956 (3%) | 200 OK [http://localhost/customer/service.wsdl]
    Merci pour l'aide

Discussions similaires

  1. [WB18] comment faire un webservice minimaliste ?
    Par courdi95 dans le forum WebDev
    Réponses: 2
    Dernier message: 13/04/2013, 12h16
  2. Aide svp pour faire un webService
    Par maxou06 dans le forum Services Web
    Réponses: 0
    Dernier message: 20/07/2009, 11h33
  3. Comment faire un webservice ?
    Par manu00 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 03/12/2006, 21h53
  4. [C#] Qui pourrait m'aider à faire marcher le WebService Amazon
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 34
    Dernier message: 24/06/2006, 02h55
  5. [XML & WebService] Faire "passer" un fic xml
    Par P4dre dans le forum Services Web
    Réponses: 7
    Dernier message: 03/08/2005, 14h47

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