diff options
Diffstat (limited to 'java/src/IceInternal/Direct.java')
-rw-r--r-- | java/src/IceInternal/Direct.java | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/java/src/IceInternal/Direct.java b/java/src/IceInternal/Direct.java index 333d44c36aa..d61a6187ac5 100644 --- a/java/src/IceInternal/Direct.java +++ b/java/src/IceInternal/Direct.java @@ -24,11 +24,18 @@ public final class Direct Ice.ObjectAdapterI adapter = (Ice.ObjectAdapterI)_current.adapter; assert(adapter != null); + // + // Must call incDirectCount() first, because it checks for + // adapter deactivation, and prevents deactivation completion + // until decDirectCount() is called. This is important, + // because getServantManager() may not be called afer + // deactivation completion. + // + adapter.incDirectCount(); + ServantManager servantManager = adapter.getServantManager(); assert(servantManager != null); - adapter.incDirectCount(); - try { _servant = servantManager.findServant(_current.id); |