Les deux méthodes suivantes sont ajoutées via l'interface PartitionDefition :
/** * Définition d'une chaîne comme nom d'alias * */ void setPartitionAlias(String aliasName); /** * Renvoi de la chaîne représentant l'alias de cette partition * * @return String */ String getPartitionAlias();
Deux exemples d'alias de partition sont fournis pour la programmation. L'un explique comment l'alias de partition fonctionne et l'autre indique comment faire coexister une partition dotée d'un alias et une partition sans alias au sein d'une même application. Les deux exemples sont présentés ci-dessous :
Exemple d'un alias de partition
public PartitionDefinition[] getPartitions() { try { //1-1 entre la partition et l'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 { /** * renvoie la chaîne de la partition sous la forme d'une clé * @param partition * @return */ public static String pingAlias(String partitionAlias) { return partitionAlias; } /** * renvoie la chaîne de la partition sous la forme d'une clé * @param partition * @return */ public static String ping(String partition) { return partition; }
Certaines méthodes peuvent utiliser un contexte d'alias de partition et d'autres peuvent utiliser un contexte de partition.
Exemple de partition dotée d'un alias et de partition sans 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; }
La procédure de routage peut utiliser un contexte d'alias de partition (s'il existe) ou un contexte de partition. Si la partition ne possède pas d'alias et qu'une demande client dispose d'un contexte d'alias de partition, les demandes client reçoivent une exception NO_IMPLEMENT mais cette partition sans alias peut être acheminée avec le contexte de partition. Dans une application, certaines partitions peuvent posséder un alias ou d'autres peuvent ne pas en avoir.
Related concepts
Qu'est-ce qu'un alias de partition ?