summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/ServantManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceInternal/ServantManager.java')
-rw-r--r--java/src/IceInternal/ServantManager.java10
1 files changed, 4 insertions, 6 deletions
diff --git a/java/src/IceInternal/ServantManager.java b/java/src/IceInternal/ServantManager.java
index 8f6dd6cb756..ddee73a6693 100644
--- a/java/src/IceInternal/ServantManager.java
+++ b/java/src/IceInternal/ServantManager.java
@@ -266,23 +266,21 @@ public final class ServantManager
public void
destroy()
{
- Object[] locatorMap = null;
+ java.util.Map<String, Ice.ServantLocator> locatorMap = new java.util.HashMap<String, Ice.ServantLocator>();
Ice.Logger logger = null;
synchronized(this)
{
assert(_instance != null); // Must not be called after destruction.
logger = _instance.initializationData().logger;
_servantMapMap.clear();
+
+ locatorMap.putAll(_locatorMap);
_locatorMap.clear();
- locatorMap = _locatorMap.entrySet().toArray();
_instance = null;
}
- for(int i = 0; i < locatorMap.length; ++i)
+ for(java.util.Map.Entry<String, Ice.ServantLocator> p : locatorMap.entrySet())
{
- @SuppressWarnings("unchecked")
- java.util.Map.Entry<String, Ice.ServantLocator> p =
- (java.util.Map.Entry<String, Ice.ServantLocator>)locatorMap[i];
Ice.ServantLocator locator = p.getValue();
try
{