diff options
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 9 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.h | 1 | ||||
-rwxr-xr-x | cs/src/Ice/ObjectAdapterI.cs | 12 | ||||
-rw-r--r-- | java/src/Ice/ObjectAdapterI.java | 11 |
4 files changed, 24 insertions, 9 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 0a7ac99d39a..b02cf0a9ef5 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -1237,9 +1237,12 @@ ObjectAdapterI::updateLocatorRegistry(const IceInternal::LocatorInfoPtr& locator { try { - ProcessPtr servant = new ProcessI(_communicator); - Ice::ObjectPrx process = createDirectProxy(addWithUUID(servant)->ice_getIdentity()); - locatorRegistry->setServerProcessProxy(serverId, ProcessPrx::uncheckedCast(process)); + if(_processId.name == "") + { + ProcessPtr servant = new ProcessI(_communicator); + _processId = addWithUUID(servant)->ice_getIdentity(); + } + locatorRegistry->setServerProcessProxy(serverId, ProcessPrx::uncheckedCast(createDirectProxy(_processId))); } catch(const ServerNotFoundException&) { diff --git a/cpp/src/Ice/ObjectAdapterI.h b/cpp/src/Ice/ObjectAdapterI.h index 35b6d697a33..b0e567837c3 100644 --- a/cpp/src/Ice/ObjectAdapterI.h +++ b/cpp/src/Ice/ObjectAdapterI.h @@ -129,6 +129,7 @@ private: bool _noConfig; bool _threadPerConnection; size_t _threadPerConnectionStackSize; + Identity _processId; class ProcessI : public Process { diff --git a/cs/src/Ice/ObjectAdapterI.cs b/cs/src/Ice/ObjectAdapterI.cs index 64064af7d4d..969db9f7372 100755 --- a/cs/src/Ice/ObjectAdapterI.cs +++ b/cs/src/Ice/ObjectAdapterI.cs @@ -791,6 +791,7 @@ namespace Ice _directCount = 0; _waitForActivate = false; _noConfig = noConfig; + _processId = null; if(_noConfig) { @@ -1283,9 +1284,13 @@ namespace Ice { try { - Process servant = new ProcessI(_communicator); - Ice.ObjectPrx process = createDirectProxy(addWithUUID(servant).ice_getIdentity()); - locatorRegistry.setServerProcessProxy(serverId, ProcessPrxHelper.uncheckedCast(process)); + if(_processId == null) + { + Process servant = new ProcessI(_communicator); + _processId = addWithUUID(servant).ice_getIdentity(); + } + locatorRegistry.setServerProcessProxy(serverId, + ProcessPrxHelper.uncheckedCast(createDirectProxy(_processId))); } catch(ServerNotFoundException) { @@ -1410,5 +1415,6 @@ namespace Ice private bool _destroyed; private bool _noConfig; private bool _threadPerConnection; + private Identity _processId; } } diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java index 6275105e550..5fd915719ea 100644 --- a/java/src/Ice/ObjectAdapterI.java +++ b/java/src/Ice/ObjectAdapterI.java @@ -1275,9 +1275,13 @@ public final class ObjectAdapterI implements ObjectAdapter { try { - Process servant = new ProcessI(_communicator); - Ice.ObjectPrx process = createDirectProxy(addWithUUID(servant).ice_getIdentity()); - locatorRegistry.setServerProcessProxy(serverId, ProcessPrxHelper.uncheckedCast(process)); + if(_processId == null) + { + Process servant = new ProcessI(_communicator); + _processId = addWithUUID(servant).ice_getIdentity(); + } + locatorRegistry.setServerProcessProxy(serverId, + ProcessPrxHelper.uncheckedCast(createDirectProxy(_processId))); } catch(ServerNotFoundException ex) { @@ -1407,4 +1411,5 @@ public final class ObjectAdapterI implements ObjectAdapter private boolean _destroyed; private boolean _noConfig; private boolean _threadPerConnection; + private Identity _processId = null; } |