diff options
Diffstat (limited to 'java/src/IceInternal/ProxyFactory.java')
-rw-r--r-- | java/src/IceInternal/ProxyFactory.java | 51 |
1 files changed, 18 insertions, 33 deletions
diff --git a/java/src/IceInternal/ProxyFactory.java b/java/src/IceInternal/ProxyFactory.java index ac05fe1d57b..45d3ea2c557 100644 --- a/java/src/IceInternal/ProxyFactory.java +++ b/java/src/IceInternal/ProxyFactory.java @@ -1,6 +1,6 @@ // ********************************************************************** // -// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. +// Copyright (c) 2003-2009 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. @@ -112,7 +112,11 @@ public final class ProxyFactory // We retry ObjectNotExistException if the reference is // indirect. // - li.clearObjectCache(ref); + + if(ref.isWellKnown()) + { + li.clearCache(ref); + } } else if(ref.getRouterInfo() != null && one.operation.equals("ice_add_proxy")) { @@ -132,7 +136,7 @@ public final class ProxyFactory if(out != null) { - out.__send(cnt); + out.__retry(cnt, 0); } return cnt; // We must always retry, so we don't look at the retry count. } @@ -205,42 +209,23 @@ public final class ProxyFactory logger.trace(traceLevels.retryCat, s); } - if(interval > 0) + if(out != null) { - if(out != null) - { - final int count = cnt; - _instance.timer().schedule(new TimerTask() - { - public void - runTimerTask() - { - out.__send(count); - } - }, interval); - } - else - { - // - // Sleep before retrying. - // - try - { - Thread.currentThread().sleep(interval); - } - catch(InterruptedException ex1) - { - } - } + out.__retry(cnt, interval); } - else + else if(interval > 0) { - if(out != null) + // + // Sleep before retrying. + // + try + { + Thread.currentThread().sleep(interval); + } + catch(InterruptedException ex1) { - out.__send(cnt); } } - return cnt; } |