diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-10-27 06:32:41 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-10-27 06:32:41 +0000 |
commit | cacf9b72b4a2ac0c82957d626db0d13ed4b5eb01 (patch) | |
tree | 97fd9f1b6d1485bd724002b624777b919b8b7f66 /cpp/src/IceGrid/Database.cpp | |
parent | fix windows compilation problem. (diff) | |
download | ice-cacf9b72b4a2ac0c82957d626db0d13ed4b5eb01.tar.bz2 ice-cacf9b72b4a2ac0c82957d626db0d13ed4b5eb01.tar.xz ice-cacf9b72b4a2ac0c82957d626db0d13ed4b5eb01.zip |
Fix
Diffstat (limited to 'cpp/src/IceGrid/Database.cpp')
-rw-r--r-- | cpp/src/IceGrid/Database.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp index 6819e1c7b12..55c0f36bf45 100644 --- a/cpp/src/IceGrid/Database.cpp +++ b/cpp/src/IceGrid/Database.cpp @@ -176,11 +176,6 @@ Database::Database(const Ice::ObjectAdapterPtr& adapter, _serial(0) { // - // Register a default servant to manage manually registered object adapters. - // - _internalAdapter->addServantLocator(new AdapterServantLocator(this), "IceGridAdapter"); - - // // Cache the servers & adapters. // ServerEntrySeq entries; @@ -196,11 +191,21 @@ Database::Database(const Ice::ObjectAdapterPtr& adapter, warn << "invalid application `" << p->first << "':\n" << ex.reason; } } - + _serverCache.setTraceLevels(_traceLevels); _nodeCache.setTraceLevels(_traceLevels); _adapterCache.setTraceLevels(_traceLevels); _objectCache.setTraceLevels(_traceLevels); + + // + // Register a default servant to manage manually registered object adapters. + // + // NOTE: This must be done only once we're sure this constructor + // won't throw. The servant locator is holding a handle on this + // object and if an exception was thrown a bogus database object + // won't be referenced from the servant locator. + // + _internalAdapter->addServantLocator(new AdapterServantLocator(this), "IceGridAdapter"); } Database::~Database() |