I due metodi riportati di seguito vengono aggiunti mediante l'interfaccia PartitionDefition:
/** * Imposta una stringa come nome alias * */ void setPartitionAlias(String aliasName); /** * Restituisce la stringa dell'alias della partizione per questa partizione * * @return String */ String getPartitionAlias();
Due esempi dell'alias della partizione sono forniti come esempi di programmazione. Uno di questi esempi dimostra il modo in cui funziona un'alias della partizione mentre l'altro mostra come funziona in caso di partizioni miste (con alias e senza alias) nella stessa applicazione. I due esempi sono:
Esempio dell'alias della partizione
public PartitionDefinition[] getPartitions() { try { //1-1 between partition and alias numOfAlias=numOfPartitions; partitionAlias= new String[numOfAlias]; } catch (Exception e) { … } PartitionDefinition[] rc = new PartitionDefinition[numOfPartitions]; for (int i = 1; i <= numOfPartitions; ++i) { rc[i - 1] = ivManager.createPartitionDefinition(PartitionAlias.PARTITION_PREFIX + padZeroToString(i + "", 6)); rc[i-1].setPartitionAlias(PartitionAlias.PARTITION_ALIAS + padZeroToString(i + "", 6)); } return rc; }
public class PartitionAlias_PartitionKey { /** * restituisce la stringa della partizione come chiave della partizione * @param partition * @return */ public static String pingAlias(String partitionAlias) { return partitionAlias; } /** * restituisce la stringa della partizione come chiave della partizione * @param partition * @return */ public static String ping(String partition) { return partition; }
Alcuni metodi possono utilizzare il contesto dell'alias della partizione mentre altri usano il contesto della partizione.
Esempio di partizione mista (con alias e senza alias)
public PartitionDefinition[] getPartitions() { try { numOfAlias=numOfPartitions/5; partitionAlias= new String[numOfAlias]; } catch (Exception e) { …… } PartitionDefinition[] rc = new PartitionDefinition[numOfPartitions]; for (int i = 1; i <= numOfPartitions; ++i) { rc[i - 1] = ivManager.createPartitionDefinition(MixedAliasNoAliasPartition.PARTITION_PREFIX + padZeroToString(i + "", 6)); if ((i-1)%5==0){ int k= (i-1)/5 + 1; rc[i-1].setPartitionAlias(MixedAliasNoAliasPartition.PARTITION_ALIAS + padZeroToString(k + "", 6)); } } return rc; }
Il routing può utilizzare sia il contesto dell'alias di una partizione (se esiste) che il contesto di una partizione. Se l'alias della partizione non esiste e la richiesta del client ha un contesto per l'alias della partizione, le richieste client non riceveranno un'eccezione NO_IMPLEMENT, ma questa partizione senza alias può essere indirizzata con un contesto della partizione. In qualsiasi applicazione, alcune partizioni possono avere un alias mentre altre no.
Related concepts
Cos'è un alias di una partizione?