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); } }