# ActionWebService: XMLRPC Server Multicall possible?

**URL:** <https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197>\
**Category:** Rails\
**Created:** [August 16, 2006, 7:51pm UTC](https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197 "2006-08-16T19:51:38Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Holger\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/898d66/32.png) [@Holger\_B](https://www.ruby-forum.com/u/Holger_B)\
**Post date:** [August 16, 2006, 7:51pm UTC](https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197/1 "2006-08-16T19:51:38Z")

</div>

Hi all,  
I have a question concerning ActionWebService XMLRPC servers: Is it  
possible to send multicall requests to the Web service? I tried to  
use multicall and get the error message:  
no such method ‘system.multicall’ on API [MyAPI]

In Changeset 2021 there is the following commit message:  
add ‘system.multicall’ support to XML-RPC. boxcarred methods must  
still exist  
on the target service(s), value casting will still be performed, and  
recursive  
‘system.multicall’ calls are not allowed.

Any hints what I can do to enable multicalls in my Rails application?

best regards,  
Holger

---

<div class="post-metadata">

**Author:** ![Holger\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/898d66/32.png) [@Holger\_B](https://www.ruby-forum.com/u/Holger_B)\
**Post date:** [August 17, 2006, 11:40am UTC](https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197/2 "2006-08-17T11:40:57Z")

</div>

Thank you very much for your help.

irb(main):001:0\> require ‘xmlrpc/client’  
=\> true

irb(main):002:0\> server = XMLRPC::Client.new2(‘[http://localhost:3000/](http://localhost:3000/)  
my/api’)  
=\> #\<XMLRPC::Client:0x59a2e0 @user=nil, @proxy\_port=nil, @auth=nil,  
@cookie=nil, @create=nil, @port=3000, @http=#\<Net::HTTP localhost:  
3000 open=false\>, @proxy\_host=nil, @http\_last\_response=nil,  
@parser=nil, @timeout=30, @path=“/my/api”, @password=nil,  
@http\_header\_extra=nil, @use\_ssl=false, @host=“localhost”\>

irb(main):004:0\> result = server.multicall([‘UniverseGetBuildings’,  
‘de’, ‘666’],[‘UniverseGetDefense’, ‘de’, ‘666’])  
XMLRPC::FaultException: XMLRPC::FaultException  
from /usr/local/lib/ruby/1.8/xmlrpc/client.rb:447:in  
`multicall’  
from (irb):4

irb(main):005:0\> result2 = server.multicall2([‘Function1’, 'param1,  
‘param2’],[‘Function2’, ‘param1’, ‘param2’])  
=\> [false, #\<XMLRPC::FaultException: XMLRPC::FaultException\>]

irb(main):009:0\> result2[1].to\_h  
=\> {“faultCode”=\>2, “faultString”=\>“no such method ‘system.multicall’  
on API MyApi”}

---

<div class="post-metadata">

**Author:** ![Holger\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/898d66/32.png) [@Holger\_B](https://www.ruby-forum.com/u/Holger_B)\
**Post date:** [August 17, 2006, 12:25am UTC](https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197/3 "2006-08-17T00:25:11Z")

</div>

multicall should be enabled by default. Show me how you call it, please.

On 8/16/06, Holger B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> recursive

## – Kent

> **[DATANOISE.COM](https://www.datanoise.com/)**
>
> DATANOISE.COM - Contact us for any business inquiries

---

<div class="post-metadata">

**Author:** ![Holger\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/898d66/32.png) [@Holger\_B](https://www.ruby-forum.com/u/Holger_B)\
**Post date:** [August 17, 2006, 4:41pm UTC](https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197/4 "2006-08-17T16:41:28Z")

</div>

Can you check log files at the server side? Are there any exceptions  
logged?

On 8/17/06, Holger B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> @parser=nil, @timeout=30, @path=“/my/api”, @password=nil,  
> ‘param2’],[‘Function2’, ‘param1’, ‘param2’])
> 
> > multicall should be enabled by default. Show me how you call it,
> > 
> > > add ‘system.multicall’ support to XML-RPC. boxcarred methods must  
> > > Rails mailing list  
> > > Rails mailing list  
> > > removed\_email\_address@domain.invalid  
> > > [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

## – Kent

> **[DATANOISE.COM](https://www.datanoise.com/)**
>
> DATANOISE.COM - Contact us for any business inquiries

---

<div class="post-metadata">

**Author:** ![Holger\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/898d66/32.png) [@Holger\_B](https://www.ruby-forum.com/u/Holger_B)\
**Post date:** [August 17, 2006, 7:08pm UTC](https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197/5 "2006-08-17T19:08:49Z")

</div>

On 8/17/06, Holger B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> An excerpt from my development.log the server.log file is empty in  
> my application’s log dir I hope tha helps. Or do you mean an other  
> log file?

Hm, strange. How do you register your api with a controller? What  
web\_service\_dispatching\_mode are you using?

## – Kent

> **[DATANOISE.COM](https://www.datanoise.com/)**
>
> DATANOISE.COM - Contact us for any business inquiries

---

<div class="post-metadata">

**Author:** ![Holger\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/898d66/32.png) [@Holger\_B](https://www.ruby-forum.com/u/Holger_B)\
**Post date:** [August 18, 2006, 12:53pm UTC](https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197/6 "2006-08-18T12:53:10Z")

</div>

In my app/apis/ directory I have got a file called oms\_api.rb where  
the api is defined.  
web\_service\_dispatching\_mode is default ( I did not change it). So I  
think direct dispatching is used.  
All functions who should be usable by oms webservice are listed in  
the api file.  
In app/controllers/oms\_controller.rb all the functions of the web  
service are defined.

I have  
wsdl\_service\_name ‘Oms’  
web\_service\_api OmsApi  
in my oms\_controller.

Do I have to specify the system.multicall function in my oms api?

Holger

---

<div class="post-metadata">

**Author:** ![Holger\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/898d66/32.png) [@Holger\_B](https://www.ruby-forum.com/u/Holger_B)\
**Post date:** [August 17, 2006, 5:11pm UTC](https://www.ruby-forum.com/t/actionwebservice-xmlrpc-server-multicall-possible/65197/7 "2006-08-17T17:11:33Z")

</div>

An excerpt from my development.log the server.log file is empty in  
my application’s log dir I hope tha helps. Or do you mean an other  
log file?

Parameters: {"\<?xml version"=\>"“1.0” ?

> system.multicall\</  
> methodName\>methodNameUniverseGetDefense\</  
> value\>params\</  
> name\>de\</  
> value\>666\</  
> member\>methodName\</  
> name\>UniverseGetBuildings\</  
> member\>params\</  
> name\>de\</  
> value\>666\</  
> member\>\</  
> methodCall\>\n", “action”=\>“api”, “controller”=\>“oms”}

Web Service Request: system.multicall  
([{“methodName”=\>“UniverseGetDefense”, “params”=\>[“de”, “666”]},  
{“methodName”=\>“UniverseGetBuildings”, “params”=\>[“de”, “666”]}])  
Entrypoint: api  
ler"=\>“oms”}

Web Service Request: system.multicall  
([{“methodName”=\>“UniverseGetDefense”, “params”=\>[“de”, “666”]},  
{“methodName”=\>“UniverseGetBuildings”, “params”=\>[“de”, “666”]}])  
Entrypoint: api

 \<?xml version="1.0" ?\>system.multicall\</

methodName\>methodNameUniverseGetDefense\</  
value\>params\</  
name\>de\</  
value\>666\</  
member\>methodName\</  
name\>UniverseGetBuildings\</  
member\>params\</  
name\>de\</  
value\>666\</  
member\>\</  
methodCall\>

ActionWebService::Dispatcher::DispatcherError (no such method  
‘system.multicall’ on API OmsApi):  
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.1.2/lib/  
action\_web\_service/dispatcher/abstract.rb:152:in  
`web_service_invocation' /usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.1.2/lib/ action_web_service/dispatcher/abstract.rb:18:in`invoke\_web\_service\_request’  
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.1.2/lib/  
action\_web\_service/dispatcher/action\_controller\_dispatcher.rb:53:in  
`dispatch_web_service_request' /usr/local/lib/ruby/1.8/benchmark.rb:293:in`measure’  
/usr/local/lib/ruby/gems/1.8/gems/actionwebservice-1.1.2/lib/  
action\_web\_service/dispatcher/action\_controller\_dispatcher.rb:51:in  
`dispatch_web_service_request' (eval):1:in`api’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/  
action\_controller/base.rb:910:in `perform_action_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/ action_controller/filters.rb:368:in`perform\_action\_without\_benchmark’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/  
action\_controller/benchmarking.rb:69:in `perform_action_without_rescue' /usr/local/lib/ruby/1.8/benchmark.rb:293:in`measure’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/  
action\_controller/benchmarking.rb:69:in `perform_action_without_rescue' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/ action_controller/rescue.rb:82:in`perform\_action’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/  
action\_controller/base.rb:381:in `process_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/ action_controller/filters.rb:377:in`process\_without\_session\_management\_support’  
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/  
action\_controller/session\_management.rb:117:in `process' /usr/local/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/dispatcher.rb: 38:in`dispatch’  
/usr/local/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/  
fcgi\_handler.rb:150:in `process_request' /usr/local/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/ fcgi_handler.rb:54:in`process!’  
/usr/local/lib/ruby/site\_ruby/1.8/fcgi.rb:600:in `each_cgi' /usr/local/lib/ruby/site_ruby/1.8/fcgi.rb:597:in`each\_cgi’  
/usr/local/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/  
fcgi\_handler.rb:53:in `process!' /usr/local/lib/ruby/gems/1.8/gems/rails-1.1.2/lib/ fcgi_handler.rb:23:in`process!’  
/Users/holger/Projects/oms/public/dispatch.fcgi:24

Web Service Response: =\> #\<XMLRPC::FaultException:  
XMLRPC::FaultException\>

 \<?xml version="1.0" ? \>faultCode2faultStringno such method 'system.multicall' on API OmsApi Sending data Completed in 0.00648 (154 reqs/sec) | Rendering: 0.00005 (0%) | DB: 0.00000 (0%) | 200 OK [http://localhost/oms/api]
