[omniORB] Problem in network between 'server' and 'client'
VEYSSIERE Nicolas
nicolas.veyssiere at thalesgroup.com
Wed Oct 20 17:42:45 BST 2010
---- oups, forgot to send to the list too ----
Yes a freshly launched NameService don't solve the problem.
But after my tests I can say this :
Claire 'light' (only client to PO) -> PO : works
Claire 'light' (both client and server) -> PO : don't works
Maybe it is a problem about sharing the orb ?
Claire light, is really light : wiating as server on orb->run(), and as soon the abonnement method is fired, search the PO in the nameservice, and call notification to the PO.
As was able to shrink the code to the minium, I will post it:
CORBA::ORB_var orb;
int runOrb()
{
CORBA::Object_var poaObj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var rootPoa = PortableServer::POA::_narrow(poaObj);
CIORAdmin_impl* claireImpl = new CLA::CIORAdmin_impl(orb);
PortableServer::ObjectId_var _cior_impl_oid = rootPoa->activate_object(claireImpl);
CORBA::Object_var obj1 = claireImpl->_this();
CORBA::String_var x;
x = orb->object_to_string(obj1);
printf("Ref : %s", x.inout());
// ---------------------------------------------------------------------
CosNaming::NamingContext_var rootContext;
CORBA::Object_var obj;
obj = orb->resolve_initial_references("NameService");
rootContext = CosNaming::NamingContext::_narrow(obj);
if(CORBA::is_nil(rootContext))
{
printf("Failed to narrow the root naming context.\n");
return 0;
}
CosNaming::Name objectName;
objectName.length(1);
objectName[0].id = (const char*) "CLAIRE";
rootContext->rebind(objectName, obj1);
// ---------------------------------------------------------------------
claireImpl->_remove_ref();
PortableServer::POAManager_var pman = rootPoa->the_POAManager();
pman->activate();
orb->run();
return 0;
}
int main(int argc, char *argv[])
{
orb = CORBA::ORB_init(argc, argv);
printf("---> Run ORB : %d\n", runOrb());
return 0;
}
and here is the code abonnement :
bool CLAIRE_impl::abonnement(const char* name) throw (CORBA::SystemException) {
try
{
CORBA::Object_var referenceRootContext = _orb->resolve_initial_references("NameService");
if(CORBA::is_nil(referenceRootContext))
{
return false;
}
// nameservice ....
CosNaming::NamingContext_var rootContext = CosNaming::NamingContext::_narrow(referenceRootContext);
if(CORBA::is_nil(rootContext))
{
return false;
}
CosNaming::Name nsName;
nsName.length(1);
nsName[0].id = CORBA::string_dup(name);
CORBA::Object_var referenceClient;
try
{
referenceClient = rootContext->resolve(nsName);
}
catch(CosNaming::NamingContext::NotFound& ex)
{
return false;
}
catch(CORBA::TRANSIENT& ex)
{
return false;
}
PO_var m_Client = PO::_narrow(referenceClient);
if(CORBA::is_nil(m_Client.in()))
{
return false;
}
m_Client->notification("TEST !!!!");
}
catch(CORBA::COMM_FAILURE& ex)
{
return false;
}
catch(CORBA::SystemException&)
{
return false;
}
catch(CORBA::Exception&)
{
return false;
}
catch(omniORB::fatalException& fe)
{
return false;
}
catch(...)
{
return false;
}
return true;
}
So I am a bit lost, as the code is quite simple.
But maybe I have to init 2 orb, I really don't know.
Thanks anyway for your help.
--
Nicolas V.
-----Message d'origine-----
De : bjorn rohde jensen [mailto:bjensen at fastmail.fm]
Envoyé : mercredi 20 octobre 2010 16:15
À : VEYSSIERE Nicolas (D3S)
Objet : Re: [omniORB] Problem in network between 'server' and 'client'
On 10/20/10 15:32, VEYSSIERE Nicolas wrote:
> I haven't done anything specific to endPoint.
>
> But I don't undestand, endPointPublish seems to be a parameter for the 'server' side of omniORB, and in fact this part works.
>
>
> Claire <------ PO
> C/omniORB -------> Java/sun
>
> The problem is that every call from Claire to PO don't works.
>
> Here is the log from omniORB :
>
> omniORB: (0) 2010-10-20 14:19:22.350504: My addresses are:
> omniORB: 192.9.10.213
> omniORB: 127.0.0.1
> omniORB: (0) 2010-10-20 14:19:22.350605: Maximum supported GIOP version is 1.2
> omniORB: (0) 2010-10-20 14:19:22.350721: Native char code sets: ISO-8859-1 UTF-8.
> omniORB: (0) 2010-10-20 14:19:22.350737: Transmission char code sets: ISO-8859-1(1.2) ISO-8859-1(1.1) ISO-8859-1(1.0) UTF-8(1.2) UTF-8(1.1).
> omniORB: (0) 2010-10-20 14:19:22.359827: Native wide char code sets: UTF-16.
> omniORB: (0) 2010-10-20 14:19:22.359842: Transmission wide char code sets: UTF-16(1.2).
> omniORB: (0) 2010-10-20 14:19:22.359897: Initialising omniDynamic library.
> omniORB: (0) 2010-10-20 14:19:22.360172: Current configuration is as follows:
> omniORB: DefaultInitRef (file) =
> omniORB: DefaultInitRef (args) =
> omniORB: InitRef = NameService=corbaloc:iiop:127.0.0.1:900/NameService
> omniORB: abortOnInternalError = 0
> omniORB: abortOnNativeException = 0
> omniORB: acceptBiDirectionalGIOP = 0
> omniORB: acceptMisalignedTcIndirections = 0
> omniORB: bootstrapAgentHostname =
> omniORB: bootstrapAgentPort = 900
> omniORB: clientCallTimeOutPeriod = 0
> omniORB: clientConnectTimeOutPeriod = 0
> omniORB: clientTransportRule = * unix,ssl,tcp
> omniORB: configFile = /etc/omniORB.cfg
> omniORB: connectionWatchImmediate = 0
> omniORB: connectionWatchPeriod = 50000
> omniORB: copyValuesInLocalCalls = 1
> omniORB: diiThrowsSysExceptions = 0
> omniORB: dumpConfiguration = 0
> omniORB: endPoint = giop:tcp::
> omniORB: endPointPublish = addr
> omniORB: giopMaxMsgSize = 2097152
> omniORB: giopTargetAddressMode = KeyAddr
> omniORB: id = omniORB4
> omniORB: idleThreadTimeout = 10
> omniORB: immediateAddressSwitch = 0
> omniORB: inConScanPeriod = 180
> omniORB: lcdMode = 0
> omniORB: maxGIOPConnectionPerServer = 5
> omniORB: maxGIOPVersion = 1.2
> omniORB: maxInterleavedCallsPerConnection = 5
> omniORB: maxServerThreadPerConnection = 100
> omniORB: maxServerThreadPoolSize = 100
> omniORB: maxSocketRecv = 2147483647
> omniORB: maxSocketSend = 2147483647
> omniORB: nativeCharCodeSet = ISO-8859-1
> omniORB: nativeWCharCodeSet = UTF-16
> omniORB: objectTableSize = 0
> omniORB: offerBiDirectionalGIOP = 0
> omniORB: oneCallPerConnection = 1
> omniORB: outConScanPeriod = 120
> omniORB: poaHoldRequestTimeout = 0
> omniORB: poaUniquePersistentSystemIds = 1
> omniORB: principal = [Null]
> omniORB: resetTimeOutOnRetries = 0
> omniORB: scanGranularity = 5
> omniORB: serverCallTimeOutPeriod = 0
> omniORB: serverTransportRule = * unix,ssl,tcp
> omniORB: socketSendBuffer = -1
> omniORB: strictIIOP = 1
> omniORB: supportBootstrapAgent = 1
> omniORB: supportCurrent = 1
> omniORB: supportPerThreadTimeOut = 0
> omniORB: tcAliasExpand = 0
> omniORB: threadPerConnectionLowerLimit = 9000
> omniORB: threadPerConnectionPolicy = 1
> omniORB: threadPerConnectionUpperLimit = 10000
> omniORB: threadPoolWatchConnection = 1
> omniORB: traceExceptions = 1
> omniORB: traceFile = /tmp/omniorb.trace
> omniORB: traceInvocationReturns = 1
> omniORB: traceInvocations = 1
> omniORB: traceLevel = 30
> omniORB: traceThreadId = 1
> omniORB: traceTime = 1
> omniORB: unixTransportDirectory = /tmp/omni-%u
> omniORB: unixTransportPermission = 777
> omniORB: useTypeCodeIndirections = 1
> omniORB: validateUTF8 = 0
> omniORB: verifyObjectExistsAndType = 1
> omniORB: (0) 2010-10-20 14:19:22.367598: Initialising incoming endpoints.
> omniORB: (0) 2010-10-20 14:19:22.367635: Instantiate endpoint 'giop:tcp::0'
> omniORB: (0) 2010-10-20 14:19:22.367754: Bind to address :: ephemeral port.
> omniORB: (0) 2010-10-20 14:19:22.367867: Publish specification: 'addr'
> omniORB: (0) 2010-10-20 14:19:22.367900: Try to publish 'addr' for endpoint giop:tcp:192.9.10.213:49487
> omniORB: (0) 2010-10-20 14:19:22.367922: Publish endpoint 'giop:tcp:192.9.10.213:49487'
> omniORB: (0) 2010-10-20 14:19:22.368040: Starting serving incoming endpoints.
> omniORB: (1) 2010-10-20 14:19:22.368994: AsyncInvoker: thread id = 1 has started. Total threads = 1
> omniORB: (1) 2010-10-20 14:19:22.369019: giopRendezvouser task execute for giop:tcp:192.9.10.213:49487
> omniORB: (0) 2010-10-20 14:19:22.388273: Adding root<0> (activating) to object table.
> omniORB: (0) 2010-10-20 14:19:22.388307: State root<0> (activating) -> active
> omniORB: (0) 2010-10-20 14:19:22.394211: Creating ref to local: root<0>
>
>
>
> On my side I tried to make it works, so I created a client Claire -> PO, and it works.
> Now I will try to add the server part to this test app, and try to find what makes it fail.
>
>
> Thanks.
>
> -- Nicolas V. -----Message d'origine----- De :
> omniorb-list-bounces at omniorb-support.com
> [mailto:omniorb-list-bounces at omniorb-support.com] De la part de bjorn
> rohde jensen Envoyé : mercredi 20 octobre 2010 15:19 À :
> omniorb-list at omniorb-support.com Objet : Re: [omniORB] Problem in
> network between 'server' and 'client'
>> > Hello,
>> >
>> > I have a little problem here, I have 2 apps : one 'server' using omniORB, named Claire, et a second, a 'client' named PO.
>> >
>> > Claire is started first, register itself to the name service (I am using the java name service, orbd) and waits.
>> > PO is started then, register itself to the name service, search for Claire in the name service, and do some methods calls.
>> >
>> > At this point, everything is ok.
>> >
>> > Then PO call a method named 'abonnement(in string name)', where name represents the name used in the name service.
>> >
>> > Claire use the name parameter for searching PO in the name service, and retreive a reference to it.
>> >
>> > The problem, is that when I call a PO method from this reference, it fails.
>> >
>> > Here is the omniorb's log from Claire :
>> >
>> > omniORB: (4) 2010-10-20 10:44:36.756051:
>> > 4749 4f50 0102 0000 0000 006d 0000 0007 GIOP.......m....
>> > 0300 0000 0000 0002 0000 000e fe4c beab .............L..
>> > c642 5700 0000 0000 0000 0001 0000 000b .BW.............
>> > 6162 6f6e 6e65 6d65 6e74 0078 0000 0003 abonnement.x....
>> > 0000 0011 0000 0002 0002 0011 0000 0001 ................
>> > 0000 000c 0000 0000 0001 0001 0001 0109 ................
>> > 4e45 4f00 0000 0002 0014 4f00 0000 0002 NEO.......O.....
>> > 0000 0005 706c 6f70 00 ....plop.
>> > omniORB: (4) 2010-10-20 10:44:36.756088: Receive codeset service context and set TCS to (ISO-8859-1,UTF-16)
>> > omniORB: (4) 2010-10-20 10:44:36.756106: Dispatching remote call 'abonnement' to: root<0> (active)
>> > omniORB: (4) 2010-10-20 10:44:36.756191: Initial reference `NameService' resolved from configuration file.
>> > omniORB: (4) 2010-10-20 10:44:36.756217: Invoke '_is_a' on remote: key<............................RootPOA.....NameService.....NC0.>
>> > omniORB: (4) 2010-10-20 10:44:36.756249: sendChunk: to giop:tcp:192.9.10.213:1049 148 bytes
>> > omniORB: (4) 2010-10-20 10:44:36.756267:
>> > 4749 4f50 0102 0000 0000 0088 0000 0006 GIOP............
>> > 0300 0000 0000 2034 0000 003c afab cb00 ...... 4...<....
>> > 0000 0022 0000 03e8 0000 0001 0000 0000 ..."............
>> > 0000 0002 0000 0008 526f 6f74 504f 4100 ........RootPOA.
>> > 0000 000c 4e61 6d65 5365 7276 6963 6500 ....NameService.
>> > 0000 0003 4e43 3014 0000 0006 5f69 735f ....NC0....._is_
>> > 6100 0020 0000 0000 0000 0028 4944 4c3a a.. .......(IDL:
>> > 6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
>> > 672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
>> > 312e 3000 1.0.
>> > omniORB: (4) 2010-10-20 10:44:36.757341: inputMessage: from giop:tcp:192.9.10.213:1049 41 bytes
>> > omniORB: (4) 2010-10-20 10:44:36.757361:
>> > 4749 4f50 0102 0001 0000 001d 0000 0006 GIOP............
>> > 0000 0000 0000 0001 4e45 4f00 0000 0002 ........NEO.....
>> > 0014 00cc 0000 0006 01 .........
>> > omniORB: (4) 2010-10-20 10:44:36.757393: Return '_is_a' on remote: key<............................RootPOA.....NameService.....NC0.>
>> > omniORB: (4) 2010-10-20 10:44:36.757420: Creating ref to remote: key<............................RootPOA.....NameService.....NC0.>
>> > target id : IDL:omg.org/CosNaming/NamingContext:1.0
>> > most derived id:
>> > omniORB: (4) 2010-10-20 10:44:36.757464: Invoke 'resolve' on remote: key<............................RootPOA.....NameService.....NC0.>
>> > omniORB: (4) 2010-10-20 10:44:36.757489: sendChunk: to giop:tcp:192.9.10.213:1049 125 bytes
>> > omniORB: (4) 2010-10-20 10:44:36.757505:
>> > 4749 4f50 0102 0000 0000 0071 0000 0008 GIOP.......q....
>> > 0300 0000 0000 2034 0000 003c afab cb00 ...... 4...<....
>> > 0000 0022 0000 03e8 0000 0001 0000 0000 ..."............
>> > 0000 0002 0000 0008 526f 6f74 504f 4100 ........RootPOA.
>> > 0000 000c 4e61 6d65 5365 7276 6963 6500 ....NameService.
>> > 0000 0003 4e43 3014 0000 0008 7265 736f ....NC0.....reso
>> > 6c76 6500 0000 0000 0000 0001 0000 0005 lve.............
>> > 706c 6f70 0072 672f 0000 0001 00 plop.rg/.....
>> > omniORB: (4) 2010-10-20 10:44:36.758805: inputMessage: from giop:tcp:192.9.10.213:1049 210 bytes
>> > omniORB: (4) 2010-10-20 10:44:36.758821:
>> > 4749 4f50 0102 0001 0000 00c6 0000 0008 GIOP............
>> > 0000 0000 0000 0001 4e45 4f00 0000 0002 ........NEO.....
>> > 0014 00cc 0000 0006 0000 0013 4944 4c3a ............IDL:
>> > 434c 412f 436c 6965 6e74 3a31 2e30 002e CLA/Client:1.0..
>> > 0000 0001 0000 0000 0000 0086 0001 0200 ................
>> > 0000 000d 3139 312e 302e 3234 382e 3533 ....191.0.248.53
>> > 0000 130f 0000 0031 afab cb00 0000 0020 .......1.......
>> > c8d0 a394 0000 0001 0000 0000 0000 0001 ................
>> > 0000 0008 526f 6f74 504f 4100 0000 0008 ....RootPOA.....
>> > 0000 0001 0000 0000 1400 0000 0000 0002 ................
>> > 0000 0001 0000 0020 0000 0000 0001 0001 ....... ........
>> > 0000 0002 0501 0001 0001 0020 0001 0109 ........... ....
>> > 0000 0001 0001 0100 0000 0026 0000 0002 ...........&....
>> > 0002 ..
>> > omniORB: (4) 2010-10-20 10:44:36.758985: Creating ref to remote: key<............................RootPOA..............>
>> > target id : IDL:omg.org/CORBA/Object:1.0
>> > most derived id: IDL:CLA/Client:1.0
>> > omniORB: (4) 2010-10-20 10:44:36.759010: Return 'resolve' on remote: key<............................RootPOA.....NameService.....NC0.>
>> > omniORB: (4) 2010-10-20 10:44:36.759063: LocateRequest to remote: key<............................RootPOA..............>
>> > omniORB: (4) 2010-10-20 10:44:36.759172: Client attempt to connect to giop:tcp:191.0.248.53:4879
>> > omniORB: (4) 2010-10-20 10:44:36.759269: Failed to connect: 191.0.248.53
>> > omniORB: (4) 2010-10-20 10:44:36.759329: Switch rope to use address giop:tcp:191.0.248.53:4879
>> > omniORB: (4) 2010-10-20 10:44:36.759355: Unable to open new connection: giop:tcp:191.0.248.53:4879
>> > omniORB: (4) 2010-10-20 10:44:36.759371: throw giopStream::CommFailure from giopStream.cc:1152(0,NO,TRANSIENT_ConnectFailed)
>> > omniORB: (4) 2010-10-20 10:44:36.759612: throw TRANSIENT from omniObjRef.cc:1137 (NO,TRANSIENT_ConnectFailed)
>> > omniORB: (4) 2010-10-20 10:44:36.759812: omniRemoteIdentity deleted.
>> > omniORB: (4) 2010-10-20 10:44:36.759830: ObjRef(IDL:CLA/Client:1.0) -- deleted.
>> > omniORB: (4) 2010-10-20 10:44:36.759895: ObjRef() -- deleted.
>> > omniORB: (4) 2010-10-20 10:44:36.759938: sendChunk: to giop:tcp:191.0.248.53:4884 28 bytes
>> >
>> >
>> > I tried to telnet the ip/port of the PO app, and it works, I don't understand why omniORB fails.
>> > I tried to developp a test programme of Claire in java, implementing the same idl, everything works well.
>> >
>> > Can the problem be linked to the fact that the Claire app runs on a server that have more that one interface ? :
>> >
>> > omniORB: (0) 2010-10-20 11:18:06.044802: My addresses are:
>> > omniORB: 192.9.12.16
>> > omniORB: 192.9.10.213
>> > omniORB: 127.0.0.1
>> >
>> > and
>> >
>> > omniORB: endPoint = giop:tcp:192.9.10.213:
>> >
>> > Note : there is a router between the network 192.9.10.213 and 191.0.248.53, but the problem is still here if I tried from the same network.
>> >
>> >
>> > Thanks for your help.
>> >
>> > --
>> > Nicolas V.
>> >
> Hi there,
>
> Could it be that you used the endPoint option to pick a particular
> interface to listen to but didnt use the endPointPublish option to
> ensure, that this interface was the one published in the IORs?
>
> Its documented under section 4.5 in the omniORB user guide.
>
> Regards,
>
> Bjorn
>
> _______________________________________________
> omniORB-list mailing list
> omniORB-list at omniorb-support.com
> http://www.omniorb-support.com/mailman/listinfo/omniorb-list
If you havent done anything fancy like specifying endpoints, things
should just work. Are you sure, your Claire program isnt picking up an
old stale PO object reference in the nameservice?
Does the same thing happen, if you start with an empty nameservice?
Regards,
Bjorn
More information about the omniORB-list
mailing list