@Override public String toString() { return serverRef.getProviderURL()+"/"+objectName; }
/** * 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 = CMIConfig.getBindNameForProvider(); 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; }
/** * Always choose the same server (called singleton) on any client. * @param cmiReferences a list of references * @throws NoLoadBalanceableException if no server available * @return the singleton */ public synchronized T choose(final List<T> cmiReferences) throws NoLoadBalanceableException { if (cmiReferences.size() == 0) { LOGGER.error("The given list is empty"); throw new NoLoadBalanceableException("The given list is empty"); } // Search for an available singleton for(String serverRef : serverRefs) { for(T cmiReference : cmiReferences) { if(serverRef.equals(cmiReference.getServerRef().getProviderURL())) { LOGGER.debug("Found a singleton: {0}", serverRef); return cmiReference; } } } // None singleton is available, use an other policy. return lbPolicy.choose(cmiReferences); }
env.put(Context.PROVIDER_URL, serverRef.getProviderURL()); Context chosenContext; try{ LOGGER.debug("Lookup {0} on {1}", bindName, serverRef.getProviderURL()); object = PortableRemoteObject.narrow(chosenContext.lookup(bindName), interfaceClass); } catch (NamingException e) { LOGGER.debug("No ClientClusterViewProvider is bound with the name {0} at the url {1}", bindName, serverRef.getProviderURL(), e); throw new NamingPoolException( "No ClientClusterViewProvider is bound with the name "+bindName +" at the url "+serverRef.getProviderURL(), e);
localContext = getRealContext(localRegistry.getProviderURL(), initialContextFactoryName);
String providerURL = serverRef.getProviderURL();
String pURL = serverRef.getProviderURL(); LOGGER.debug("Chosen providerURL: {0}", pURL); Context context = getRealContext(pURL, initialContextFactoryName);
String pURL = serverRef.getProviderURL(); LOGGER.debug("Chosen providerURL: {0}", pURL); Context context = getRealContext(pURL, initialContextFactoryName);
String pURL = serverRef.getProviderURL(); LOGGER.debug("Chosen providerURL: {0}", pURL); Context context = getRealContext(pURL, initialContextFactoryName);