コード例 #1
0
ファイル: PluginManagerI.java プロジェクト: zhangwei5095/ice
  @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;
  }
コード例 #2
0
ファイル: ObjectAdapterI.java プロジェクト: pedia/zeroc-ice
  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());
      }
    }
  }