示例#1
0
  public static void doRegisterSocketService(Grid grid, String id, String ip, int port) {
    CoreServicesLookupImpl coreServicesWP =
        (CoreServicesLookupImpl) grid.get(CoreServicesLookup.class);

    GridServiceDescriptionImpl gsd =
        (GridServiceDescriptionImpl) coreServicesWP.lookup(WhitePages.class);
    if (gsd == null) {
      gsd = new GridServiceDescriptionImpl(WhitePages.class);
    }

    GridServiceDescription<WhitePages> service =
        coreServicesWP.getServices().get(WhitePages.class.getName());
    if (service == null) {
      coreServicesWP.getServices().put(WhitePages.class.getName(), gsd);
      service = gsd;
    }
    Address address = null;
    if (service.getAddresses().get("socket") != null) {
      address = service.getAddresses().get("socket");
    } else {
      address = service.addAddress("socket");
    }

    InetSocketAddress[] addresses = (InetSocketAddress[]) address.getObject();
    if (addresses != null && addresses.length >= 1) {
      InetSocketAddress[] newAddresses = new InetSocketAddress[addresses.length + 1];
      if (addresses != null) {
        System.arraycopy(addresses, 0, newAddresses, 0, addresses.length);
      }

      newAddresses[addresses.length] = new InetSocketAddress(ip, port);
      ServiceConfiguration conf = new WhitePagesServiceConfiguration(newAddresses);
      service.setData(conf);
    } else {
      InetSocketAddress[] newAddress = new InetSocketAddress[1];
      newAddress[0] = new InetSocketAddress(ip, port);
      address.setObject(newAddress);
      ServiceConfiguration conf = new WhitePagesServiceConfiguration(newAddress);
      service.setData(conf);
    }
  }