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.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java
index 81bd1d060dc..e0d96a50572 100644
--- a/java/src/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/ObjectAdapterI.java
@@ -18,10 +18,15 @@ public class ObjectAdapterI implements ObjectAdapter
return _name; // _name is immutable
}
- public Communicator
+ public synchronized Communicator
getCommunicator()
{
- return _instance.communicator(); // _instance is immutable
+ if(_instance == null)
+ {
+ throw new ObjectAdapterDeactivatedException();
+ }
+
+ return _communicator;
}
public synchronized void
@@ -126,6 +131,7 @@ public class ObjectAdapterI implements ObjectAdapter
_locatorMap.clear();
_instance = null;
+ _communicator = null;
}
public void
@@ -391,9 +397,10 @@ public class ObjectAdapterI implements ObjectAdapter
// Only for use by IceInternal.ObjectAdapterFactory
//
public
- ObjectAdapterI(IceInternal.Instance instance, String name, String endpts)
+ ObjectAdapterI(IceInternal.Instance instance, Communicator communicator, String name, String endpts)
{
_instance = instance;
+ _communicator = communicator;
_printAdapterReadyDone = false;
_name = name;
@@ -597,6 +604,7 @@ public class ObjectAdapterI implements ObjectAdapter
}
private IceInternal.Instance _instance;
+ private Communicator _communicator;
private boolean _printAdapterReadyDone;
private String _name;
private boolean _useEndpointsInProxy;