CORBA IIOPNet and OmniORBpy, remote method call with valuetype param issue
0 posts in topic
Flat View  Flat View
TOPIC ACTIONS:
 

Posted By:   Michel_PV
Posted On:   Tuesday, August 30, 2011 12:05 PM

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() { return null; } public bool DoSomething(InterfaceRequest requestData) { return true; } }    More>>

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()
{
return null;
}

public bool DoSomething(InterfaceRequest requestData)
{
return true;
}

}



The input param class type is declared like this on server side (quite simple):


[Serializable]
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 [40] 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.    <<Less
About | Sitemap | Contact