Les noms de partition sont extraits des demandes HTTP à l'aide d'expressions de demande. Une expression de demande se compose de deux chaînes : l'expression de concordance et la formule de classification. Une fois associées, elles fournissent un mécanisme qui permet de classifier les demandes HTTP en fonction d'expressions Java standard. L'expression de concordance détermine comment établir une concordance entre une partie de l'URL et une chaîne de demande. Une fois la concordance établie, la formule de classification indique la partie de l'URL et la chaîne de demande spécifiant la partition.
Pour déterminer si une demande HTTP doit être envoyée à une partition, le routeur ODR utilise le mécanisme et les classes de concordance du package java.util.regex. Si une entrée correspond à l'expression de concordance indiquée par l'application, la demande est associée à une partition. Le routeur ODR concatène l'adresse URL et la chaîne de demande pour former une chaîne unique et appelle les masques établis à partir de toutes les expressions de concordance définies par l'application. Lorsqu'une entrée concordante existe, la formule de classification détermine comment créer le nom de la partition. Le caractère spécial $ indique la partie de l'expression de concordance à utiliser.
Considérons le cas où l'expression de concordance est (user=)(*)$ et la formule de classification est $2. La formule $2 utilise la partie de l'expression de concordance (.*) car c'est la seconde partie du modèle de concordance. Par exemple, si l'adresse URL se compose de www.ibm.com/something/user=fred, $1 correspond à user= alors que $2 correspond à fred.
Etudions l'expression de concordance (user=)(*)(rodriguez)$. Supposons qu'une demande contenant l'URL user=adolforodriguez soit transmise. Avec la formule de classification $2, le nom de la partition serait adolfo. Avec la formule de classification mapartition$2, la demande dispose du nom de partition mapartitionadolfo. De la même manière, avec la formule de classification $2$3, le nom de partition est adolforodriguez.
Notez que les expressions de concordance peuvent se chevaucher. Par exemple, si vous disposez des deux expressions de concordance (user=)(*)$ et (user=)(*)& qu'une adresse URL est reçue avec une chaîne de demande comportant user=adolfo&Submit=Enter, ces deux expressions correspondent. La première expression extrait adolfo&Submit=Enter avec la formule de classification $2 et la seconde expression extrait adolfo. Comme adolfo est un nom de partition valide, il est choisi pour devenir le nom de partition. Même si l'expression régulière la plus précise correspond généralement à la cible visée, la fonction de partitionnement HTTP ne tente pas de privilégier une expression particulière par rapport à une autre. Au contraire, toutes les expressions sont appliquées jusqu'à ce qu'un nom de partition valide soit trouvé ou qu'aucune valeur ne soit disponible.
Related concepts
Partitionnement HTTP