public List<ServerRef> getProviderURLs() { List<ServerRef> serverRefs = new ArrayList<ServerRef>(providerServerRefs.size()); for(CMIReference cmiRef : providerServerRefs) { serverRefs.add(cmiRef.getServerRef()); } return serverRefs; }
public List<CMIReference> choose(final Collection<CMIReference> loadBalanceables) { List<CMIReference> availables = new ArrayList<CMIReference>(); for(CMIReference loadBalanceable : loadBalanceables) { if(!clusterViewManager.isServerBlackListed(loadBalanceable.getServerRef())) { availables.add(loadBalanceable); } } return availables; }
public void addCMIReference(final CMIReference cmiReference) { Set<CMIReference> cmiReferences = refs.get(cmiReference.getServerRef().getProtocol()); if(cmiReferences == null) { cmiReferences = new HashSet<CMIReference>(); refs.put(cmiReference.getServerRef().getProtocol(), cmiReferences); } cmiReferences.add(cmiReference); }
public boolean removeCMIReference(final CMIReference cmiReference) { Set<CMIReference> cmiReferences = refs.get(cmiReference.getServerRef().getProtocol()); if(cmiReferences == null) { return false; } return cmiReferences.remove(cmiReference); }
public void removeServerRef(final String serverRef) { for(Set<CMIReference> cmiReferences : refs.values()) { Iterator<CMIReference> it = cmiReferences.iterator(); while(it.hasNext()) { if(it.next().getServerRef().getProviderURL().equals(serverRef)) { it.remove(); } } } }
/** * @param cmiReference * a reference on a instance * @return a path in the distributed tree for a instance */ private String getCMIReferencePath(final CMIReference cmiReference) { return getProtocolPath(getObjectPath(cmiReference.getObjectName()), cmiReference.getServerRef().getProtocol()) + "/" + cmiReference.getServerRef().getInetAddress().getHostAddress() + "_" + cmiReference.getServerRef().getPort(); }
/** * Return the list of servers for a given protocol. * * @param protocolName * a name of protocol * @return the set of references on server connected to this server */ public final Set<ServerId> getServerRefs(final String protocolName) { Set<ServerId> serverRefs = new HashSet<ServerId>(); for (String objectName : getObjectNames()) { try { for (CMIReference cmiRef : getCMIReferences(objectName, protocolName)) { serverRefs.add((ServerId) cmiRef.getServerRef()); } } catch (ObjectNotFoundException e) { // Not an error! } } return serverRefs; }
/** * @return references of blacklisted server */ public final Set<ServerId> getBlacklistedServers() { Set<ServerId> serverIds = new HashSet<ServerId>(); for (String objectName : getObjectNames()) { try { for (CMIReference cmiRef : getCMIReferences(objectName)) { ServerId serverId = (ServerId) cmiRef.getServerRef(); if (isServerBlackListed(serverId)) { serverIds.add(serverId); } } } catch (ObjectNotFoundException e) { // Not an error! } } return serverIds; }
/** * @param serverName * a server name * @return references on registries of the given server */ public final Set<ServerId> getRefsOnRegistries(final String serverName) { Set<ServerId> serverRefs = new HashSet<ServerId>(); for (String objectName : getObjectNames()) { try { for (CMIReference cmiRef : getCMIReferences(objectName)) { ServerId serverId = (ServerId) cmiRef.getServerRef(); if (serverId.getServerName().equals(serverName)) { serverRefs.add(serverId); } } } catch (ObjectNotFoundException e) { // Not an error! } } return serverRefs; }
/** * @return domain names */ public final Set<String> getDomainNames() { Set<String> domainNames = new HashSet<String>(); for (String objectName : getObjectNames()) { try { for (CMIReference cmiRef : getCMIReferences(objectName)) { domainNames.add(((ServerId) cmiRef.getServerRef()) .getDomainName()); } } catch (ObjectNotFoundException e) { // Not an error! } } return domainNames; }
/** * @param serverRef * a reference on CMI server * @return references on clustered object for a given server */ public final Set<CMIReference> getCMIRefsForServerRef( final ServerRef serverRef) { Set<CMIReference> cmiRefs = new HashSet<CMIReference>(); for (String objectName : getObjectNames()) { try { for (CMIReference cmiRef : getCMIReferences(objectName)) { ServerRef serverId = cmiRef.getServerRef(); if (serverId.equals(serverRef)) { cmiRefs.add(cmiRef); } } } catch (ObjectNotFoundException e) { // Not an error! } } return cmiRefs; }
/** * Returns a list of String representing a ServerRef for an object with the given name and protocol. * @param objectName a name of object * @param protocolName a name of protocol * @return a list of String representing a ServerRef for an object with the given name and protocol * @throws IllegalArgumentException if none object has the given name */ public List<String> getServerRefs(final String objectName, final String protocolName) throws IllegalArgumentException { Collection<CMIReference> cmiReferences; try { cmiReferences = clusterViewManager.getCMIReferences(objectName, protocolName); } catch (ObjectNotFoundException e) { LOGGER.error("Object not found: {0}", objectName, e); throw new IllegalArgumentException("Object not found: " + objectName + "\n" + e.getMessage()); } List<String> stringOfCMIRefs = new ArrayList<String>(cmiReferences.size()); for(CMIReference cmiReference : cmiReferences) { stringOfCMIRefs.add(cmiReference.getServerRef().getProviderURL()); } return stringOfCMIRefs; }
/** * Gets all objects hosted on a given server started with the given * protocol. * * @param serverUrl * a server reference * @param protocolName * a given protocol * @return the set of references on objects for the given server. */ public final Set<String> getServerObjectForProtocol(final String serverUrl, final String protocolName) { Set<String> objectRefs = new HashSet<String>(); for (String objectName : getObjectNames()) { try { for (CMIReference cmiRef : getCMIReferences(objectName, protocolName)) { if (cmiRef.getServerRef().getProviderURL() .equals(serverUrl)) { objectRefs.add(objectName); } } } catch (ObjectNotFoundException e) { // Not an error! } } return objectRefs; }
/** * @param domainName * domain name * @return names of CMI server */ public final Set<String> getServerNames(final String domainName) { Set<String> serverNames = new HashSet<String>(); for (String objectName : getObjectNames()) { try { for (CMIReference cmiRef : getCMIReferences(objectName)) { ServerId serverId = (ServerId) cmiRef.getServerRef(); if (serverId.getDomainName().equals(domainName)) { serverNames.add(serverId.getServerName()); } } } catch (ObjectNotFoundException e) { // Not an error! } } return serverNames; }
/** * Returns a list of String representing a ServerRef for an object with the given name. * @param objectName a name of object * @return a list of String representing a ServerRef for an object with the given name * @throws IllegalArgumentException if none object has the given name * @throws UnsupportedOperationException if the used manager is at client-side */ public List<String> getServerRefs(final String objectName) throws IllegalArgumentException, UnsupportedOperationException { if(!(clusterViewManager instanceof ServerClusterViewManager)) { LOGGER.error("Clients cannot call this method"); throw new UnsupportedOperationException("Clients cannot call this method"); } Collection<CMIReference> cmiReferences; try { cmiReferences = ((ServerClusterViewManager) clusterViewManager).getCMIReferences(objectName); } catch (ObjectNotFoundException e) { LOGGER.error("Object not found: {0}", objectName, e); throw new IllegalArgumentException("Object not found: " + objectName + "\n" + e.getMessage()); } List<String> stringOfCMIRefs = new ArrayList<String>(cmiReferences.size()); for(CMIReference cmiReference : cmiReferences) { stringOfCMIRefs.add(cmiReference.getServerRef().getProviderURL()); } return stringOfCMIRefs; }
/** * Pulls and updates the CMI references for the object with the given name. * @param objectName a name of object * @throws RemoteException * @throws ObjectNotFoundException */ private void pullAndUpdateCMIReferences(final String objectName) throws RemoteException, ObjectNotFoundException { // Update the list of nodes for this RMI object Collection<CMIReference> cmiReferences = clientClusterViewProvider.getCMIReferences(objectName, protocol); // Update the load-factor of each server for(CMIReference cmiRef : cmiReferences) { pullAndUpdateMissingLoadFactor(cmiRef.getServerRef()); } clientClusterViewCache.getClusteredObject(objectName).setCMIReferences(cmiReferences); }
ServerRef serverRef = cmiReference.getServerRef(); String protocol = serverRef.getProtocol();
/** * Returns the list of Provider URL. * * @param protocolName * a name of protocol * @return providers of the cluster view for the protocol with the given * name * @throws ServerClusterViewManagerException * if none provider exists for the protocol with the given name */ public final List<String> getProviderURLs(final String protocolName) throws ServerClusterViewManagerException { String providerName = getConfig().getClientProviderName(); ArrayList<String> providerURLs = new ArrayList<String>(); try { for (CMIReference cmiReference : getCMIReferences(providerName, protocolName)) { providerURLs.add(cmiReference.getServerRef().getProviderURL()); } } catch (ObjectNotFoundException e) { LOGGER.error( "Cannot get CMIReferences for the provider whith name {0}", providerName, e); throw new ServerClusterViewManagerException( "Cannot get CMIReferences for the provider whith name " + providerName, e); } return providerURLs; }
/** * Adds a CMIReference to the cluster view. * * @param cmiReference * a reference on an instance */ public void addCMIReference(final CMIReference cmiReference) { ServerRef serverRef = cmiReference.getServerRef(); if (!(serverRef instanceof ServerId)) { LOGGER.error("Not a valid CMIReference: {0} is not a server id.", serverRef); throw new IllegalArgumentException("Not a valid CMIReference: " + serverRef + " is not a server id."); } String path = getCMIReferencePath(cmiReference); distributedTree.add(path, cmiReference); registerPath( serverRef.getProtocol() + "_" + cmiReference.getObjectName(), path); LOGGER.debug("Added {0}...[srvref:{1}, objpath:{2} ]", cmiReference, serverRef, path); }
private Object findStubOrProxy(final String objectName) throws CMIContextException, ObjectNotFoundException, NamingException { // Choose a server to perform the request. Collection<CMIReference> cmiReferences = clusterViewManager.getCMIReferences(objectName, protocol); IPolicy<CMIReference> policy = clusterViewManager.getPolicy(objectName); CMIReference cmiReference; try { cmiReference = policy.choose(cmiReferences); } catch (NoLoadBalanceableException e) { LOGGER.error("Cannot choose a CMIReference in the list {0} with LB policy {1}", cmiReferences, policy, e); throw new CMIContextException( "Cannot choose a CMIReference in the list " + cmiReferences + " with LB policy " + policy, e); } ServerRef serverRef = cmiReference.getServerRef(); String pURL = serverRef.getProviderURL(); LOGGER.debug("Chosen providerURL: {0}", pURL); Context context; context = getRealContext(pURL, initialContextFactoryName); try { return context.lookup(objectName); } finally { try { context.close(); } catch (NamingException e) { LOGGER.debug("Unable to close the context", e); } } }