diff options
Diffstat (limited to 'java/src/IceBox/Admin.java')
-rw-r--r-- | java/src/IceBox/Admin.java | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/java/src/IceBox/Admin.java b/java/src/IceBox/Admin.java index ed9fa315d5b..68c2f61a60e 100644 --- a/java/src/IceBox/Admin.java +++ b/java/src/IceBox/Admin.java @@ -62,15 +62,35 @@ public final class Admin return 0; } - final String managerEndpointsProperty = "IceBox.ServiceManager.Endpoints"; - String managerEndpoints = properties.getProperty(managerEndpointsProperty); - if(managerEndpoints.length() == 0) - { - System.err.println(appName() + ": property `" + managerEndpointsProperty + "' is not set"); - return 1; - } + String namePrefix = properties.getProperty("IceBox.Name"); + if(namePrefix.length() > 0) + { + namePrefix += "."; + } + + String managerProxy; + + String managerEndpoints = properties.getProperty("IceBox.ServiceManager.Endpoints"); + if(managerEndpoints.length() == 0) + { + if(properties.getProperty("Ice.Default.Locator").length() > 0 && namePrefix.length() > 0) + { + managerProxy = namePrefix + "ServiceManager@" + namePrefix + "ServiceManagerAdapter"; + } + else + { + System.err.println(appName() + ": property `IceBox.ServiceManager.Endpoints' is not set"); + return 1; + } + } + else + { + String managerIdentity = properties.getPropertyWithDefault("IceBox.ServiceManager.Identity", + "ServiceManager"); + managerProxy = namePrefix + managerIdentity + ":" + managerEndpoints; + } - Ice.ObjectPrx base = communicator().stringToProxy("ServiceManager:" + managerEndpoints); + Ice.ObjectPrx base = communicator().stringToProxy(managerProxy); IceBox.ServiceManagerPrx manager = IceBox.ServiceManagerPrxHelper.checkedCast(base); if(manager == null) { |