[jacorb-developer] reconnection to (TAO)servers

shectman1 shectman1 at llnl.gov
Tue Feb 3 03:25:36 CET 2015


I am in the process of trying to update from JacORB 2.3.1 and TAO 6.0.1 to
JacORB 3.5 and TAO 6.3.1, and have a question about some code I wrote some time
ago (probably under JacORB 2.3.1 and TAO 5.7).

We use TAO/C++ for our servers, and JacORB for our gui(s).

For a variety of reasons, our servers can exit while the gui(s) are still
running (everything from bugs to timeouts).  In addition our servers let
TAO select the ports when servers are run (historical artifact from when
we were using ORBIX).  When a server restarts, its pretty rare for it to be
started with the same ports as the previous invocation.

This means that every IOR in jacorb that pointed to the server that restarted,
is no longer valid, which tended to crash the gui(s) after trying to reconnect to
the server, but using a now out-dated port.  JacORB would try several times to
reconnect to the server, but since it always used an now obsolete port, it would
of course never succeed.  If there was a way for JacORB to
trigger a restart of the server, and remap the ports, I was never aware of it.

Several years ago, I implemented a JacORB based Client Interceptor, that caught
the error of the IOR with a now bad port, cracked the IOR for the server name,
called the TAO implementation repository to restart the server, looked up the
new service to get its port number, put the new port number in the IOR, and
issued a forward request.  And by magic, it all worked.  Thankfully, the worst part
was cracking the IOR, and there was a jar to support that.  Its not all that much code
actually, and significantly improved our system.

Stick with this just a bit more, I'm almost there.

In order for the Interceptor to talk to the TAO IMR, which has/had a different
interface than the JacORB IMR, I had to generate an
ImplementationRepository.idl file for the JacORB jidl compiler to generate
the java to talk to the TAO implementation repository.  For that I was able to use
ImplRepo.pidl and ServerObject.pidl from TAO.   Under TAO 6.3.1 those files no longer exist,
nor have I found equivalents (yet).

So finally - the question.  Does JacORB 3.5 have anything internally these days that
will detect when an IOR is no longer connected to the server, and tries to reconnect,
but detects the potential change in port numbers for the server (when the server is running
under TAO)?



Thank you.

-- 

Robert M. Shectman

National Atmospheric Release Advisory Center (NARAC)
Lawrence Livermore National Laboratory

shectman at llnl.gov
(925)423-6714



More information about the jacorb-developer mailing list