diff options
Diffstat (limited to 'java/src/IceInternal/Instance.java')
-rw-r--r-- | java/src/IceInternal/Instance.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java index 1ee242ba63c..2578f5b018e 100644 --- a/java/src/IceInternal/Instance.java +++ b/java/src/IceInternal/Instance.java @@ -201,6 +201,17 @@ public final class Instance return _endpointHostResolver; } + synchronized public RetryQueue + retryQueue() + { + if(_state == StateDestroyed) + { + throw new Ice.CommunicatorDestroyedException(); + } + + return _retryQueue; + } + synchronized public Timer timer() { @@ -713,6 +724,8 @@ public final class Instance _objectAdapterFactory = new ObjectAdapterFactory(this, communicator); + _retryQueue = new RetryQueue(this); + // // Add Process and Properties facets // @@ -753,6 +766,7 @@ public final class Instance IceUtilInternal.Assert.FinalizerAssert(_locatorManager == null); IceUtilInternal.Assert.FinalizerAssert(_endpointFactoryManager == null); IceUtilInternal.Assert.FinalizerAssert(_pluginManager == null); + IceUtilInternal.Assert.FinalizerAssert(_retryQueue == null); super.finalize(); } @@ -868,6 +882,11 @@ public final class Instance { _outgoingConnectionFactory.waitUntilFinished(); } + + if(_retryQueue != null) + { + _retryQueue.destroy(); + } ThreadPool serverThreadPool = null; ThreadPool clientThreadPool = null; @@ -877,8 +896,8 @@ public final class Instance synchronized(this) { _objectAdapterFactory = null; - _outgoingConnectionFactory = null; + _retryQueue = null; if(_connectionMonitor != null) { @@ -1054,6 +1073,7 @@ public final class Instance private ThreadPool _serverThreadPool; private SelectorThread _selectorThread; private EndpointHostResolver _endpointHostResolver; + private RetryQueue _retryQueue; private Timer _timer; private EndpointFactoryManager _endpointFactoryManager; private Ice.PluginManager _pluginManager; |