[Ace-users] Re: [tao-users] Network Connection Closure
Douglas C. Schmidt
schmidt at dre.vanderbilt.edu
Wed Aug 8 07:31:17 CDT 2007
> Sorry, for not mentioning the details earlier.
No problemo - thanks.
> TAO VERSION: 1.5.7
> ACE VERSION: 5.5.7
BTW, I recommend you consider upgrading to
ACE+TAO+CIAO x.5.10 (i.e., ACE 5.5.10, TAO 1.5.10, and CIAO 0.5.10),
which you can download from
under the heading: "Latest Beta Kit".
The DOC groups at Washington University, UC Irvine, and Vanderbilt
University only provide "best effort" support for non-sponsors for the
latest release, as described in
Thus, if you need more "predictable" help for earlier versions of
ACE+TAO, I recommend that you check out
for a list of companies that will provide you with ACE+TAO commercial
> HOST MACHINE and OPERATING SYSTEM: x86 / Windows 2000 and XP
> COMPILER NAME AND VERSION: Microsoft Visual C++ 2005 (ACE and TAO as shared dlls )
> $ACE_ROOT/ace/config.h: #include "ace/config-win32.h"
> $ACE_ROOT/bin/MakeProjectCreator/config/default.features: "ssl=1"
> Is it possible with TAO to close a client connection to the server, without destroying the ORB?
> To be precise _narrow to get server ---> process a few requests ---> close connection and reloop after a while (event
> driven cannot be preconfigured)
> My problem arises from thousands of client programs trying to talk to a server.
> Hence I need to keep a close watch on the number of open connections to the server.
> On a stand alone client application, however, destroying the ORB closed the connection to the server.
> There are also oneway requests to the server.
> Unfortunately I am using TAO in a DLL being loaded as a plugin into an MS Office program.
> Destroying the ORB and reinitializing (with atleast a 10 second time delay) causes crashes in this case. (in both the cases
> of iiop and ssliop)
> Please note there are no crashes when run as an application on windows and linux. All the test cases work fine.
> Orb init, destroy and reinit work in an infinite loop (no time delay) over lengthy periods of time when run from an
> application exe.
> I have only one connection from the client program to a server which needs to be purged. Hence cant use
> Also tried using -ORBConnectionCachePurgePercentage 100 ... but led to a crash.
> My Svc config is: (experimented with quite a few options too ... finally reverted to the following)
> dynamic SSLIOP_Factory Service_Object * TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory()
> -SSLAuthenticate NONE -SSLPrivateKey 'PEM:key.pem' -SSLCertificate 'PEM:cert.pem'
> static Advanced_Resource_Factory "-ORBProtocolFactory SSLIOP_Factory"
> I have also tried the stable release ACE 5.5 - TAO 1.5 with the same results :(
> Have also tried explicit ACE::init and ACE::fini along with explicit winsock2 initialization upon init and reinit. Nothing
> helped as yet :(
> iiop with ACE and TAO static compilations also had the same problems.
> Could not get ssliop to work with static compile, hence reverted back to dll's.
> Hope this helps,
Thanks very much for explaining your use-case. I understand what you're
trying to do now and it makes sense to me. I agree there ought to be a
way to support this use-case, but I'm not sure if it's easy to do this
with the current way that TAO's designed/implemented. I therefore
recommend you either
. Take a look at the TAO code and tweak it so that if an option like
-ORBConnectionCacheMax is set to 0 TAO's won't cache any open
. Contact one of the commercial support companies listed at
More information about the Ace-users