How can soap client call methods in a free way?

Hi everyone,
I’m new to soap,
I wonder how to call methods as free as if all the objects are local? To
explain my question, I attached my code, please help me to look into it.
Thanks a lot.
And what’s more, I searched the web and there’s too little infomation
about ruby soap, have you guys switched to REST or sth else?

==========Server code is as below

require ‘soap/rpc/standaloneServer’

module MySOAP

class Test1
def initialize
@a = 1
@b = 2
end

def test1
  @a+@b
end

end

class Test2
def test2
Test1.new
end
end

end

class TimeServer < SOAP::RPC::StandaloneServer
def on_init
test1 = MySOAP::Test1.new
test2 = MySOAP::Test2.new
add_method(test1, “test1”)
add_method(test2, “test2”)
end
end

NS = ‘http://localhost/soap
port = 12321
svr = TimeServer.new(‘timer’,NS,‘0.0.0.0’,port)
trap(‘INT’) { svr.shutdown }
puts “My SOAP is starting… port:#{port} (Ctrl+c to quit)”
svr.start
puts “My SOAP is stop.”

===========And Client code is like this:
require ‘pp’
require ‘soap/rpc/driver’
proxy = SOAP::RPC::Driver.new(“http://localhost:12321”,
http://localhost/soap”)
proxy.add_method(‘test1’)
proxy.add_method(‘test2’)

pp proxy
a = proxy.test2
a.test1 ====> I can only call proxy.test1 but can’t call a.test1? a
is a Test1 object.