code: public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket) 
  	{
  		// If not security domain is available, or the preferred alias is NULL, 
  		// then default to the nested key manager's process for selecting the keystore
  		if (null == domain 
  				|| domain.getPreferredKeyAlias() == null) {
  			if (LOGGER.isInfoEnabled()) {
  				LOGGER.info("No preferred key alias defined.  Defaulting to JSSE certificate selection.");
  			}
  			return parent.chooseClientAlias(keyType, issuers, socket);
  		}
  		
  		String preferredAlias = domain.getPreferredKeyAlias();
  		
  		String alias = null;
  		if (keyType != null && keyType.length > 0) {
  			for (int i=0; i<keyType.length; i++) {
  				alias = chooseClientAliasForKey(preferredAlias, keyType[i], issuers, socket);
  				if (alias != null && !"".equals(alias)) {
  					if (LOGGER.isInfoEnabled()) {
  						LOGGER.info("Found valid keystore alias: " + alias);
  					}
  					return alias;
  				}
  			}
  		}
  		
  		LOGGER.warn("The requested key alias " + preferredAlias + " was not found in the keystore.  No certificate selected.  The transaction will probably fail.");
  		
  		return null;
  	}
docs: /* (non-Javadoc)
  @see javax.net.ssl.X509KeyManager#chooseClientAlias(java.lang.String[], java.security.Principal[], java.net.Socket)