public List<ServerRef> getProviderURLs() { List<ServerRef> serverRefs = new ArrayList<ServerRef>(providerServerRefs.size()); for(CMIReference cmiRef : providerServerRefs) { serverRefs.add(cmiRef.getServerRef()); } return serverRefs; }
/** * @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(); }
@Override public boolean equals(final Object obj) { if(obj == null || !(obj instanceof CMIReferenceable)) { return false; } return cmiRef.equals(((CMIReferenceable<?>) obj).getReference()); }
public void addCMIReference(final CMIReference cmiReference) { synchronized (clusteredObjectsViews) { ClusteredObjectView clusteredObjectView = clusteredObjectsViews.get(cmiReference.getObjectName()); if(clusteredObjectView == null) { clusteredObjectView = new ClusteredObjectView(); clusteredObjectsViews.put(cmiReference.getObjectName(), clusteredObjectView); } clusteredObjectView.addCMIReference(cmiReference); } }
public void unbind(final String name) throws NamingException { LOGGER.debug("unbind {0}", name); if(localContext != null) { LOGGER.debug("Server mode enabled"); // Verify that replication is activated if(replicationEnabled && clusterViewManager != null && clusterViewManager.getState().equals(ClusterViewManager.State.AVAILABLE)) { // Tests if the object is clustered boolean isClustered = clusterViewManager.isClustered(name); if(isClustered) { LOGGER.debug("The object for name {0} has been removed of the cluster.", name); ((ServerClusterViewManager) clusterViewManager).removeCMIReference( new CMIReference(localRegistry, name)); } } localContext.unbind(name); } else { LOGGER.warn("Cannot unbind because server mode is not activated."); } }
@Override public int hashCode() { return cmiRef.hashCode(); }
public boolean removeCMIReference(final CMIReference cmiReference) throws ObjectNotFoundException { synchronized (clusteredObjectsViews) { ClusteredObjectView clusteredObjectView = clusteredObjectsViews.get(cmiReference.getObjectName()); if(clusteredObjectView == null) { throw new ObjectNotFoundException( "Cannot get CMI references", cmiReference.getObjectName()); } return clusteredObjectView.removeCMIReference(cmiReference); } }
/** * Binds a dummy registry to enable the load-balancing of JNDI accesses to * unclustered objects. * * @param serverRef * a reference on the local registry */ private void bindDummyRegistry(final ServerId serverRef) { String bindName = getConfig().getDummyRegistryName(); // Create an instance of CMIReference for this object CMIReference cmiReference = new CMIReference(serverRef, bindName); addObjectInstance(clusteredObjectInfoForDummyRegistry, cmiReference); watch(bindName); try { updatePolicy(bindName); } catch (PolicyFactoryException e) { LOGGER.warn("Error when updating the policy for the dummy registry", e); } catch (ObjectNotFoundException e) { LOGGER.warn("Error when updating the policy for the dummy registry", e); } }
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; }
/** * 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); }
public void removeCMIReference(final CMIReference cmiReference) { if (doRemoveCMIReference(cmiReference)) { getEventDispatcher().dispatch( new EventObjectRemoved(cmiReference.getObjectName())); } }
cmiReferences.add(new CMIReference(serverRef, providerName));
/** * Checks if the given object with the given clue is matching. * @param cmiReferenceable given object against which the check should be done. * @param cmiReference the object used as clue to check the matching. * @return true if it is matching, else false. */ public boolean isMatching(final CMIReferenceable<?> cmiReferenceable, final CMIReference cmiReference) { LOGGER.debug("{0} == {1} ?", cmiReferenceable.getReference(), cmiReference); return cmiReferenceable.getReference().equals(cmiReference); }
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); }
ServerRef serverRef = cmiReference.getServerRef(); String protocol = serverRef.getProtocol(); String bindName = cmiReference.getObjectName(); Class<?> interfaceClass = clusterViewManager.getInterface(bindName);
objectName = ((CMIReference) loadBalanceable).getObjectName(); Set<String> applicationExceptionNames = clusterViewManager.getApplicationExceptionNames(objectName); if(applicationExceptionNames.contains(cause.getClass().getName())) {
CMIReference cmiReference = new CMIReference(localRegistry, name);
public boolean isMatching(final CMIReferenceable<?> object, final CMIReference clue) { LOGGER.debug("{0} == {1} ?", object.getReference(), clue); return object.getReference().equals(clue); }
public boolean removeCMIReference(final CMIReference cmiReference) { Set<CMIReference> cmiReferences = refs.get(cmiReference.getServerRef().getProtocol()); if(cmiReferences == null) { return false; } return cmiReferences.remove(cmiReference); }
protected boolean doRemoveCMIReference(final CMIReference cmiReference) { ServerRef serverRef = cmiReference.getServerRef(); String objectName = cmiReference.getObjectName(); String objectPath = getObjectPath(objectName); String refPath = getCMIReferencePath(cmiReference);