summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/CommunicatorI.java1
-rw-r--r--java/src/Ice/RoutingTable.java10
-rw-r--r--java/src/IceInternal/RouterManager.java6
3 files changed, 17 insertions, 0 deletions
diff --git a/java/src/Ice/CommunicatorI.java b/java/src/Ice/CommunicatorI.java
index 20923b57f88..e9eaffc97d2 100644
--- a/java/src/Ice/CommunicatorI.java
+++ b/java/src/Ice/CommunicatorI.java
@@ -17,6 +17,7 @@ class CommunicatorI implements Communicator
{
if(_instance != null)
{
+ _serverThreadPool = null;
_instance.objectAdapterFactory().shutdown();
_instance.destroy();
_instance = null;
diff --git a/java/src/Ice/RoutingTable.java b/java/src/Ice/RoutingTable.java
index 844bd527318..e5a2f24776a 100644
--- a/java/src/Ice/RoutingTable.java
+++ b/java/src/Ice/RoutingTable.java
@@ -18,6 +18,16 @@ public final class RoutingTable
}
//
+ // Clear the contents of the routing table.
+ //
+ synchronized public void
+ clear()
+ {
+ _table.clear();
+ }
+
+
+ //
// Returns false if the Proxy exists already.
//
public boolean
diff --git a/java/src/IceInternal/RouterManager.java b/java/src/IceInternal/RouterManager.java
index 5c27c32be06..54472df5dfc 100644
--- a/java/src/IceInternal/RouterManager.java
+++ b/java/src/IceInternal/RouterManager.java
@@ -19,6 +19,12 @@ public final class RouterManager
synchronized void
destroy()
{
+ java.util.Iterator i = _table.values().iterator();
+ while(i.hasNext())
+ {
+ RouterInfo info = (RouterInfo)i.next();
+ info.destroy();
+ }
_table.clear();
}