summaryrefslogtreecommitdiff
path: root/java/src/Ice/ObjectAdapterI.java
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2012-01-03 22:35:03 +0100
committerJose <jose@zeroc.com>2012-01-03 22:35:03 +0100
commitf508d7d7cf7811062c5466efa2b3bf7f921947d8 (patch)
treeadcee43513be1f8a3a76db89857d6aa73a664842 /java/src/Ice/ObjectAdapterI.java
parentICE-4744 Eclipse plugin: build failure when slice2java generates warning (diff)
downloadice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.tar.bz2
ice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.tar.xz
ice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.zip
ICE-3318 Java finalizers are problematic
Diffstat (limited to 'java/src/Ice/ObjectAdapterI.java')
-rw-r--r--java/src/Ice/ObjectAdapterI.java34
1 files changed, 21 insertions, 13 deletions
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java
index e975fc71434..96a44c35dd9 100644
--- a/java/src/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/ObjectAdapterI.java
@@ -1038,25 +1038,33 @@ public final class ObjectAdapterI implements ObjectAdapter
finalize()
throws Throwable
{
- if(!_deactivated)
+ try
{
- _instance.initializationData().logger.warning("object adapter `" + getName() +
- "' has not been deactivated");
+ if(!_deactivated)
+ {
+ _instance.initializationData().logger.warning("object adapter `" + getName() +
+ "' has not been deactivated");
+ }
+ else if(!_destroyed)
+ {
+ _instance.initializationData().logger.warning("object adapter `" + getName() + "' has not been destroyed");
+ }
+ else
+ {
+ IceUtilInternal.Assert.FinalizerAssert(_threadPool == null);
+ //IceUtilInternal.Assert.FinalizerAssert(_servantManager == null); // Not cleared, it needs to be immutable.
+ //IceUtilInternal.Assert.FinalizerAssert(_incomingConnectionFactories.isEmpty());
+ IceUtilInternal.Assert.FinalizerAssert(_directCount == 0);
+ IceUtilInternal.Assert.FinalizerAssert(!_waitForActivate);
+ }
}
- else if(!_destroyed)
+ catch(java.lang.Exception ex)
{
- _instance.initializationData().logger.warning("object adapter `" + getName() + "' has not been destroyed");
}
- else
+ finally
{
- IceUtilInternal.Assert.FinalizerAssert(_threadPool == null);
- //IceUtilInternal.Assert.FinalizerAssert(_servantManager == null); // Not cleared, it needs to be immutable.
- //IceUtilInternal.Assert.FinalizerAssert(_incomingConnectionFactories.isEmpty());
- IceUtilInternal.Assert.FinalizerAssert(_directCount == 0);
- IceUtilInternal.Assert.FinalizerAssert(!_waitForActivate);
+ super.finalize();
}
-
- super.finalize();
}
private ObjectPrx