diff options
Diffstat (limited to 'java-compat/src')
-rw-r--r-- | java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java | 10 | ||||
-rw-r--r-- | java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java | 10 |
2 files changed, 16 insertions, 4 deletions
diff --git a/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java b/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java index bd8f1007fe5..748a2ae83a8 100644 --- a/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java +++ b/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java @@ -102,7 +102,8 @@ public class PluginI implements Ice.Plugin // Ice.ObjectPrx locator = _locatorAdapter.addWithUUID(new LocatorI(lookup, locatorRegistryPrx)); _defaultLocator = _communicator.getDefaultLocator(); - _communicator.setDefaultLocator(Ice.LocatorPrxHelper.uncheckedCast(locator)); + _locator = Ice.LocatorPrxHelper.uncheckedCast(locator); + _communicator.setDefaultLocator(_locator); _multicastAdapter.activate(); _replyAdapter.activate(); @@ -116,12 +117,17 @@ public class PluginI implements Ice.Plugin _multicastAdapter.destroy(); _replyAdapter.destroy(); _locatorAdapter.destroy(); - _communicator.setDefaultLocator(_defaultLocator); + // Restore original default locator proxy, if the user didn't change it in the meantime + if(_communicator.getDefaultLocator().equals(_locator)) + { + _communicator.setDefaultLocator(_defaultLocator); + } } private Ice.Communicator _communicator; private Ice.ObjectAdapter _multicastAdapter; private Ice.ObjectAdapter _replyAdapter; private Ice.ObjectAdapter _locatorAdapter; + private Ice.LocatorPrx _locator; private Ice.LocatorPrx _defaultLocator; } diff --git a/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java b/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java index 2ee4d3b1d1d..2b49d63747d 100644 --- a/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java +++ b/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java @@ -562,7 +562,8 @@ class PluginI implements Plugin id.category = !instanceName.isEmpty() ? instanceName : java.util.UUID.randomUUID().toString(); _locator = new LocatorI(_name, LookupPrxHelper.uncheckedCast(lookupPrx), properties, instanceName, voidLoc); _defaultLocator = _communicator.getDefaultLocator(); - _communicator.setDefaultLocator(Ice.LocatorPrxHelper.uncheckedCast(_locatorAdapter.addWithUUID(_locator))); + _locatorPrx = Ice.LocatorPrxHelper.uncheckedCast(_locatorAdapter.addWithUUID(_locator)); + _communicator.setDefaultLocator(_locatorPrx); Ice.ObjectPrx lookupReply = _replyAdapter.addWithUUID(new LookupReplyI(_locator)).ice_datagram(); _locator.setLookupReply(LookupReplyPrxHelper.uncheckedCast(lookupReply)); @@ -577,7 +578,11 @@ class PluginI implements Plugin { _replyAdapter.destroy(); _locatorAdapter.destroy(); - _communicator.setDefaultLocator(_defaultLocator); + // Restore original default locator proxy, if the user didn't change it in the meantime + if(_communicator.getDefaultLocator().equals(_locatorPrx)) + { + _communicator.setDefaultLocator(_defaultLocator); + } } @Override @@ -592,5 +597,6 @@ class PluginI implements Plugin private Ice.ObjectAdapter _locatorAdapter; private Ice.ObjectAdapter _replyAdapter; private LocatorI _locator; + private Ice.LocatorPrx _locatorPrx; private Ice.LocatorPrx _defaultLocator; } |