diff options
author | Mark Spruiell <mes@zeroc.com> | 2002-09-24 22:33:14 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2002-09-24 22:33:14 +0000 |
commit | 63865a96f31e877c1a93a2ce233167c11d8373b6 (patch) | |
tree | 1e6df6259e7abe8c5c38e0f34d1ed136f2f137d3 /java/src/Ice/ObjectPrxHelper.java | |
parent | Fixed again the trace levels... (diff) | |
download | ice-63865a96f31e877c1a93a2ce233167c11d8373b6.tar.bz2 ice-63865a96f31e877c1a93a2ce233167c11d8373b6.tar.xz ice-63865a96f31e877c1a93a2ce233167c11d8373b6.zip |
check for Communicator destruction
Diffstat (limited to 'java/src/Ice/ObjectPrxHelper.java')
-rw-r--r-- | java/src/Ice/ObjectPrxHelper.java | 77 |
1 files changed, 47 insertions, 30 deletions
diff --git a/java/src/Ice/ObjectPrxHelper.java b/java/src/Ice/ObjectPrxHelper.java index 1d9c733c64e..f1fb70026c5 100644 --- a/java/src/Ice/ObjectPrxHelper.java +++ b/java/src/Ice/ObjectPrxHelper.java @@ -540,44 +540,51 @@ public class ObjectPrxHelper implements ObjectPrx IceInternal.TraceLevels traceLevels = _reference.instance.traceLevels(); Logger logger = _reference.instance.logger(); + IceInternal.ProxyFactory proxyFactory = _reference.instance.proxyFactory(); - int[] retryIntervals = _reference.instance.proxyFactory().getRetryIntervals(); - - if(cnt > retryIntervals.length) + // + // Instance components may be null if Communicator has been destroyed. + // + if(traceLevels != null && logger != null && proxyFactory != null) { + int[] retryIntervals = proxyFactory.getRetryIntervals(); + + if(cnt > retryIntervals.length) + { + if(traceLevels.retry >= 1) + { + String s = "cannot retry operation call because retry limit has been exceeded\n" + ex.toString(); + logger.trace(traceLevels.retryCat, s); + } + throw ex; + } + if(traceLevels.retry >= 1) { - String s = "cannot retry operation call because retry limit has been exceeded\n" + ex.toString(); + String s = "re-trying operation call"; + if(cnt > 0 && retryIntervals[cnt - 1] > 0) + { + s += " in " + retryIntervals[cnt - 1] + "ms"; + } + s += " because of exception\n" + ex; logger.trace(traceLevels.retryCat, s); } - throw ex; - } - if(traceLevels.retry >= 1) - { - String s = "re-trying operation call"; - if(cnt > 0 && retryIntervals[cnt - 1] > 0) - { - s += " in " + retryIntervals[cnt - 1] + "ms"; - } - s += " because of exception\n" + ex; - logger.trace(traceLevels.retryCat, s); + if(cnt > 0) + { + // + // Sleep before retrying. + // + try + { + Thread.currentThread().sleep(retryIntervals[cnt - 1]); + } + catch(InterruptedException ex1) + { + } + } } - if(cnt > 0) - { - // - // Sleep before retrying. - // - try - { - Thread.currentThread().sleep(retryIntervals[cnt - 1]); - } - catch(InterruptedException ex1) - { - } - } - return cnt; } @@ -626,7 +633,17 @@ public class ObjectPrxHelper implements ObjectPrx { if(_delegate == null) { - ObjectAdapter adapter = _reference.instance.objectAdapterFactory().findObjectAdapter(this); + IceInternal.ObjectAdapterFactory objectAdapterFactory = _reference.instance.objectAdapterFactory(); + + // + // Instance components may be null if Communicator has been destroyed. + // + if(objectAdapterFactory == null) + { + throw new CommunicatorDestroyedException(); + } + + ObjectAdapter adapter = objectAdapterFactory.findObjectAdapter(this); if(adapter != null) { _ObjectDelD delegate = __createDelegateD(); |