summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/Instance.java
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2013-09-09 19:12:28 +0200
committerBenoit Foucher <benoit@zeroc.com>2013-09-09 19:12:28 +0200
commit8a0d1c7e34d8bd18bd85666cce94403a5158975c (patch)
tree36050a818282c0a92ee88a6ef28354e186c5aebe /java/src/IceInternal/Instance.java
parentTest scripts improvements (diff)
downloadice-8a0d1c7e34d8bd18bd85666cce94403a5158975c.tar.bz2
ice-8a0d1c7e34d8bd18bd85666cce94403a5158975c.tar.xz
ice-8a0d1c7e34d8bd18bd85666cce94403a5158975c.zip
Fixed ICE-5196: allow setting an observer with IceMX enabled
Diffstat (limited to 'java/src/IceInternal/Instance.java')
-rw-r--r--java/src/IceInternal/Instance.java22
1 files changed, 16 insertions, 6 deletions
diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java
index 03fbc58c434..a837018cd6a 100644
--- a/java/src/IceInternal/Instance.java
+++ b/java/src/IceInternal/Instance.java
@@ -531,6 +531,13 @@ public final class Instance
return result;
}
+ public Ice.Instrumentation.CommunicatorObserver
+ getObserver()
+ {
+ return _observer; // Immutable
+ }
+
+
public synchronized void
setDefaultLocator(Ice.LocatorPrx locator)
{
@@ -817,18 +824,20 @@ public final class Instance
// Setup the communicator observer only if the user didn't already set an
// Ice observer resolver and if the admininistrative endpoints are set.
//
- if(_initData.observer == null &&
- (_adminFacetFilter.isEmpty() || _adminFacetFilter.contains("Metrics")) &&
+ if((_adminFacetFilter.isEmpty() || _adminFacetFilter.contains("Metrics")) &&
_initData.properties.getProperty("Ice.Admin.Endpoints").length() > 0)
{
- CommunicatorObserverI observer = new CommunicatorObserverI(admin);
- _initData.observer = observer;
+ _observer = new CommunicatorObserverI(admin, _initData.observer);
//
// Make sure the admin plugin receives property updates.
//
props.addUpdateCallback(admin);
}
+ else
+ {
+ _observer = _initData.observer;
+ }
}
catch(Ice.LocalException ex)
{
@@ -882,9 +891,9 @@ public final class Instance
//
// Set observer updater
//
- if(_initData.observer != null)
+ if(_observer != null)
{
- _initData.observer.setObserverUpdater(new ObserverUpdaterI(this));
+ _observer.setObserverUpdater(new ObserverUpdaterI(this));
}
//
@@ -1235,6 +1244,7 @@ public final class Instance
private final int _clientACM; // Immutable, not reset by destroy().
private final int _serverACM; // Immutable, not reset by destroy().
private final Ice.ImplicitContextI _implicitContext;
+ private final Ice.Instrumentation.CommunicatorObserver _observer;
private RouterManager _routerManager;
private LocatorManager _locatorManager;
private ReferenceFactory _referenceFactory;