Die folgenden Methoden werden mit dem Interface PartitionDefition hinzugefügt:
/** * Legt eine Zeichenfolge als Aliasnamen fest. * */ void setPartitionAlias(String aliasName); /** * Gibt die Zeichenfolge des Partitionsalias für diese Partition zurück * * @return String */ String getPartitionAlias();
Für die Programmierung werden zwei Partitionsaliasbeispiele bereitgestellt. Das eine Beispiel veranschaulicht, wie ein Partitionsalias funktioniert. Das andere Beispiel zeigt, wie Partitionsaliase und Partitionen ohne Alias in einer Anwendung parallel verwendet werden. Die beiden Beispiele werden im Folgenden beschrieben:
Beispiel für Partitionsalias
public PartitionDefinition[] getPartitions() { try { //1-1 zwischen Partition und 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 { /** * Partitionszeichenfolge als Partitionsschlüssel zurückgeben * @param partition * @return */ public static String pingAlias(String partitionAlias) { return partitionAlias; } /** * Partitionszeichenfolge als Partitionsschlüssel zurückgeben * @param partition * @return */ public static String ping(String partition) { return partition; }
Einige Methoden können einen Partitionsaliaskontext und andere einen Partitionskontext verwenden.
Beispiel mit Partitionsalias und Partitionen ohne 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; }
Für das Routing kann ein Partitionsaliaskontext, sofern vorhanden, oder ein Partitionskontext verwendet werden. Wenn für die Partition kein Partitionsalias vorhanden ist und die Clientanforderung einen Partitionsaliaskontext enthält, empfängt die Clientanforderung eine Ausnahme des Typs NO_IMPLEMENT. An die Partition ohne Partitionsalias können jedoch Anforderungen weiterleitet werden, die einen Partitionskontext enthalten. In jeder Anwendung kann es Partitionen mit Aliasen und Partitionen ohne Aliase geben.
Related concepts
Was ist ein Partitionsalias?