@Override public synchronized Plugin getPlugin(String name) { if (_communicator == null) { throw new CommunicatorDestroyedException(); } Plugin p = findPlugin(name); if (p != null) { return p; } NotRegisteredException ex = new NotRegisteredException(); ex.id = name; ex.kindOfObject = _kindOfObject; throw ex; }
private void updateLocatorRegistry( IceInternal.LocatorInfo locatorInfo, Ice.ObjectPrx proxy, boolean registerProcess) { if (!registerProcess && _id.length() == 0) { return; // Nothing to update. } // // Call on the locator registry outside the synchronization to // blocking other threads that need to lock this OA. // LocatorRegistryPrx locatorRegistry = locatorInfo != null ? locatorInfo.getLocatorRegistry() : null; String serverId = ""; if (registerProcess) { assert (_instance != null); serverId = _instance.initializationData().properties.getProperty("Ice.ServerId"); if (locatorRegistry == null) { _instance .initializationData() .logger .warning( "object adapter `" + getName() + "' cannot register the process without a locator registry"); } else if (serverId.length() == 0) { _instance .initializationData() .logger .warning( "object adapter `" + getName() + "' cannot register the process without a value for Ice.ServerId"); } } if (locatorRegistry == null) { return; } if (_id.length() > 0) { try { if (_replicaGroupId.length() == 0) { locatorRegistry.setAdapterDirectProxy(_id, proxy); } else { locatorRegistry.setReplicatedAdapterDirectProxy(_id, _replicaGroupId, proxy); } } catch (AdapterNotFoundException ex) { if (_instance.traceLevels().location >= 1) { StringBuilder s = new StringBuilder(128); s.append("couldn't update object adapter `"); s.append(_id); s.append("' endpoints with the locator registry:\n"); s.append("the object adapter is not known to the locator registry"); _instance .initializationData() .logger .trace(_instance.traceLevels().locationCat, s.toString()); } NotRegisteredException ex1 = new NotRegisteredException(); ex1.kindOfObject = "object adapter"; ex1.id = _id; throw ex1; } catch (InvalidReplicaGroupIdException ex) { if (_instance.traceLevels().location >= 1) { StringBuilder s = new StringBuilder(128); s.append("couldn't update object adapter `"); s.append(_id); s.append("' endpoints with the locator registry:\n"); s.append("the replica group `"); s.append(_replicaGroupId); s.append("' is not known to the locator registry"); _instance .initializationData() .logger .trace(_instance.traceLevels().locationCat, s.toString()); } NotRegisteredException ex1 = new NotRegisteredException(); ex1.kindOfObject = "replica group"; ex1.id = _replicaGroupId; throw ex1; } catch (AdapterAlreadyActiveException ex) { if (_instance.traceLevels().location >= 1) { StringBuilder s = new StringBuilder(128); s.append("couldn't update object adapter `"); s.append(_id); s.append("' endpoints with the locator registry:\n"); s.append("the object adapter endpoints are already set"); _instance .initializationData() .logger .trace(_instance.traceLevels().locationCat, s.toString()); } ObjectAdapterIdInUseException ex1 = new ObjectAdapterIdInUseException(); ex1.id = _id; throw ex1; } catch (LocalException e) { if (_instance.traceLevels().location >= 1) { StringBuilder s = new StringBuilder(128); s.append("couldn't update object adapter `"); s.append(_id); s.append("' endpoints with the locator registry:\n"); s.append(e.toString()); _instance .initializationData() .logger .trace(_instance.traceLevels().locationCat, s.toString()); } throw e; // TODO: Shall we raise a special exception instead of a non obvious local // exception? } if (_instance.traceLevels().location >= 1) { StringBuilder s = new StringBuilder(128); s.append("updated object adapter `"); s.append(_id); s.append("' endpoints with the locator registry\n"); s.append("endpoints = "); if (proxy != null) { Ice.Endpoint[] endpoints = proxy.ice_getEndpoints(); for (int i = 0; i < endpoints.length; i++) { s.append(endpoints[i].toString()); if (i + 1 < endpoints.length) { s.append(":"); } } } _instance .initializationData() .logger .trace(_instance.traceLevels().locationCat, s.toString()); } } if (registerProcess && serverId.length() > 0) { synchronized (this) { if (_processId == null) { Process servant = new IceInternal.ProcessI(_communicator); _processId = addWithUUID(servant).ice_getIdentity(); } } try { locatorRegistry.setServerProcessProxy( serverId, ProcessPrxHelper.uncheckedCast(createDirectProxy(_processId))); } catch (ServerNotFoundException ex) { if (_instance.traceLevels().location >= 1) { StringBuilder s = new StringBuilder(128); s.append("couldn't register server `"); s.append(serverId); s.append("' with the locator registry:\n"); s.append("the server is not known to the locator registry"); _instance .initializationData() .logger .trace(_instance.traceLevels().locationCat, s.toString()); } NotRegisteredException ex1 = new NotRegisteredException(); ex1.id = serverId; ex1.kindOfObject = "server"; throw ex1; } catch (LocalException ex) { if (_instance.traceLevels().location >= 1) { StringBuilder s = new StringBuilder(128); s.append("couldn't register server `"); s.append(serverId); s.append("' with the locator registry:\n"); s.append(ex.toString()); _instance .initializationData() .logger .trace(_instance.traceLevels().locationCat, s.toString()); } throw ex; // TODO: Shall we raise a special exception instead of a non-obvious local // exception? } if (_instance.traceLevels().location >= 1) { StringBuilder s = new StringBuilder(128); s.append("registered server `"); s.append(serverId); s.append("' with the locator registry"); _instance .initializationData() .logger .trace(_instance.traceLevels().locationCat, s.toString()); } } }