tags:

views:

43

answers:

2

Hello from Spain.

Well, I bought the book Spring Python 1.1 and I have been facing some problems that I cannot solve. I am going to write the code of each file in order to make sure everything is clear. If some of you know what is the problem, please let me know because I am desperate.

simple_service.py

class Service(object):
def happy_birthday(self, name):
    results = []
    for i in range(4):
        if i <= 2:
            results.append("Happy birthday dear %s!" % name)
        else:
            results.append("Happy birthday to you!")
            return results

simple_service_server_ctx.py

from springpython.config import *
from springpython.remoting.pyro import *

from simple_service import *

class HappyBirthdayContext(PythonConfig):
    def __init__(self):
        PythonConfig.__init__(self)

    @Object
    def target_service(self):
        return Service()

    @Object
    def service_exporter(self):
        exporter = PyroServiceExporter()
        exporter.service = self.target_service()
        exporter.service_name = "service"
        exporter.service_host = "127.0.0.1"
        exporter.service_port = "7766"
        exporter.after_properties_set()
        return exporter

simple_server.py

from springpython.context import *
from simple_service_server_ctx import *

if __name__ == "__main__":
    ctx = ApplicationContext(HappyBirthdayContext())
    ctx.get_object("service_exporter")

I run on a terminal: python simple_server and then I got the following error:

(spring)kiko@kiko-laptop:~/examples/spring$ python simple_server.py 
Traceback (most recent call last):
  File "simple_server.py", line 6, in <module>
    ctx = ApplicationContext(HappyBirthdayContext())
  File "/home/kiko/.virtualenvs/spring/lib/python2.6/site-packages/springpython/context/__init__.py", line 45, in __init__
    self.get_object(object_def.id, ignore_abstract=True)
  File "/home/kiko/.virtualenvs/spring/lib/python2.6/site-packages/springpython/container/__init__.py", line 80, in get_object
    comp = self._create_object(object_def)
  File "/home/kiko/.virtualenvs/spring/lib/python2.6/site-packages/springpython/container/__init__.py", line 129, in _create_object
    self._get_constructors_kw(object_def.named_constr))
  File "/home/kiko/.virtualenvs/spring/lib/python2.6/site-packages/springpython/factory/__init__.py", line 62, in create_object
    return self.method()
  File "<string>", line 2, in service_exporter
  File "/home/kiko/.virtualenvs/spring/lib/python2.6/site-packages/springpython/config/__init__.py", line 1370, in object_wrapper
    return _object_wrapper(f, theScope, parent, log_func_name, *args, **kwargs)
  File "/home/kiko/.virtualenvs/spring/lib/python2.6/site-packages/springpython/config/__init__.py", line 1350, in _object_wrapper
    return _deco(f, scope, parent, log_func_name, *args, **kwargs)
  File "/home/kiko/.virtualenvs/spring/lib/python2.6/site-packages/springpython/config/__init__.py", line 1345, in _deco
    results = f(*args, **kwargs)
  File "/home/kiko/examples/spring/simple_service_server_ctx.py", line 22, in service_exporter
    exporter.after_properties_set()
  File "/home/kiko/.virtualenvs/spring/lib/python2.6/site-packages/springpython/remoting/pyro/__init__.py", line 58, in after_properties_set
    pyro_obj = Pyro.core.ObjBase()
AttributeError: 'module' object has no attribute 'ObjBase'

I have added on my own the line (file:simple_service_server_ctx.py):

exporter.after_properties_set()

since I read that it must be declared (line 19, link to source code).

Thanks in advance.

A: 

Hello,

I wonder what your Pyro version is. Here using Pyro 3.9.1-1 from Ubuntu 10.04 I have no problems with running your code. Could it be that you're using Pyro 4.x which if I recall correctly was released after the book had been published?

Dariusz Suchojad
A: 

Thank you so much. I had installed the last version of Pyro, since I have just started with Spring Python.

Seriously, thank you!!!

Problem solved, ^-^ !!!

Kiko Fernandez