summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp9
-rw-r--r--cpp/src/Ice/ObjectAdapterI.h1
-rwxr-xr-xcs/src/Ice/ObjectAdapterI.cs12
-rw-r--r--java/src/Ice/ObjectAdapterI.java11
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;
}