August 30th, 2011, 09:32 AM
CORBA IIOPNet and OmniORBpy, remote method call with valuetype param issue
My scope: I'm trying to create a CORBA solution for two apps one at .NET side (server) and the other on python (client). I'm using IIOPNet for server and IDLs generation and OmniORBpy for Stubs generations and client calls. In general is working for simple calls like the typical example: Adder. But when a i try to call a method with a custom class it doesn't work.
I have this class on server side(my Remove Object) to be called from the client :
public class MyRemoteObject : MarshalByRefObject
public override object InitializeLifetimeService()
public bool DoSomething(InterfaceRequest requestData)
The input param class type is declared like this on server side (quite simple):
public class InterfaceRequest
public int SiteId;
public int UserId;
I generate my IDLs using CLSIDLGenerator and later my python stubs like "omniidl -bpython -CPython ...", until here everything is OK.
So i start the server (VS debug environment) and now on my client code i resolve the service name, i narrow my remote object successfully and i create my request object but when i try to do this:
request = InterfaceRequest()
request.SiteId = 1
request.UserId = 3
result = remoteObj.DoSomething(request)
Python blows up with no warning, no exception, any message of any kind, (i updated trace label on my omniORB config file to the highest  but nothing is getting traced), it simply crashes, i have tried a lot of stuff and i get always same result. The problem is related to the param of course (i guess).
I'm running the client side like this: python client.py -ORBInitRef NameService=corbaname::localhost:8087
(My last approach: python object reference architecture and conforming value type param passed by value are not matching at some point)
Tech details: NET 4.0, IIOPNet (last), Python 2.6, omniORB-4.1.5, omniORBpy-3.5.
Every help is appreciated, i'm little stuck with this, Thanks.
Tags for this Thread
Click Here to Expand Forum to Full Width