summaryrefslogtreecommitdiff
path: root/java/src/Ice/ObjectAdapterI.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/Ice/ObjectAdapterI.java')
-rw-r--r--java/src/Ice/ObjectAdapterI.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java
index 61af2b359d6..5c6d7755cf1 100644
--- a/java/src/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/ObjectAdapterI.java
@@ -355,6 +355,9 @@ public final class ObjectAdapterI implements ObjectAdapter
// We're done, now we can throw away all incoming connection
// factories.
//
+ // For compatibility with C#, we set _incomingConnectionFactories
+ // to null so that the finalizer does not invoke methods on objects.
+ //
_incomingConnectionFactories = null;
//
@@ -937,6 +940,32 @@ public final class ObjectAdapterI implements ObjectAdapter
}
}
+ protected synchronized void
+ finalize()
+ throws Throwable
+ {
+ 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(_communicator == null);
+ IceUtilInternal.Assert.FinalizerAssert(_incomingConnectionFactories == null);
+ IceUtilInternal.Assert.FinalizerAssert(_directCount == 0);
+ IceUtilInternal.Assert.FinalizerAssert(!_waitForActivate);
+ }
+
+ super.finalize();
+ }
+
private ObjectPrx
newProxy(Identity ident, String facet)
{