diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2007-01-05 18:44:54 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2007-01-05 18:44:54 +0000 |
commit | f6e5f4fa31eb7ca5ae0c6301b579da2752606950 (patch) | |
tree | 6198903725faacfb92fa6758a3b65a9812ff41ab /java/src/IceInternal/ObjectAdapterFactory.java | |
parent | fix header file symlink target location for db45 (diff) | |
download | ice-f6e5f4fa31eb7ca5ae0c6301b579da2752606950.tar.bz2 ice-f6e5f4fa31eb7ca5ae0c6301b579da2752606950.tar.xz ice-f6e5f4fa31eb7ca5ae0c6301b579da2752606950.zip |
Added ObjectAdapter::destroy
Diffstat (limited to 'java/src/IceInternal/ObjectAdapterFactory.java')
-rw-r--r-- | java/src/IceInternal/ObjectAdapterFactory.java | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/java/src/IceInternal/ObjectAdapterFactory.java b/java/src/IceInternal/ObjectAdapterFactory.java index f9dda51e09f..6d1a76509d6 100644 --- a/java/src/IceInternal/ObjectAdapterFactory.java +++ b/java/src/IceInternal/ObjectAdapterFactory.java @@ -92,15 +92,6 @@ public final class ObjectAdapterFactory Ice.ObjectAdapter adapter = (Ice.ObjectAdapter)i.next(); adapter.waitForDeactivate(); } - - // - // We're done, now we can throw away the object adapters. - // - // For consistency with C#, we set _adapters to null - // so that our finalizer does not try to invoke any - // methods on member objects. - // - _adapters = null; } synchronized(this) @@ -112,6 +103,37 @@ public final class ObjectAdapterFactory notifyAll(); } } + + public void + destroy() + { + // + // First wait for shutdown to finish. + // + waitForShutdown(); + + Ice.ObjectAdapter[] adapters; + + synchronized(this) + { + adapters = (Ice.ObjectAdapter[])_adapters.values().toArray(new Ice.ObjectAdapter[0]); + + // + // For consistency with C#, we set _adapters to null + // so that our finalizer does not try to invoke any + // methods on member objects. + // + _adapters = null; + } + + // + // Now we destroy each object adapter. + // + for(int i = 0; i < adapters.length; ++i) + { + adapters[i].destroy(); + } + } public synchronized Ice.ObjectAdapter createObjectAdapter(String name, String endpoints, Ice.RouterPrx router) @@ -179,7 +201,7 @@ public final class ObjectAdapterFactory public synchronized void removeObjectAdapter(String name) { - if(_waitForShutdown) + if(_waitForShutdown || _adapters == null) { return; } |