summaryrefslogtreecommitdiff
path: root/java/src/Ice/ObjectPrxHelper.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2002-09-24 22:33:14 +0000
committerMark Spruiell <mes@zeroc.com>2002-09-24 22:33:14 +0000
commit63865a96f31e877c1a93a2ce233167c11d8373b6 (patch)
tree1e6df6259e7abe8c5c38e0f34d1ed136f2f137d3 /java/src/Ice/ObjectPrxHelper.java
parentFixed again the trace levels... (diff)
downloadice-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.java77
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();