파티션 이름은 요청 표현식을 사용하여 HTTP 요청에서 추출합니다. 요청 표현식은 일치 표현식과 분류 공식의 두 가지 문자열로 구성되어 있습니다. 두 문자열이 함께 Java 지원 일반 표현식에 따라 HTTP 요청을 분류하는 메커니즘을 제공합니다. 일치 표현식은 URL 및 조회 문자열의 일부분에서 어떻게 일치하는지를 판별합니다. 분류 공식은 표현식이 일치했을 때 파티션을 지정하는 URL 및 조회 문자열의 일부분을 표시합니다.
HTTP 요청을 파티션해야 하는지 여부를 판별하기 위해 ODR은 java.util.regex 패키지의 패턴 및 일치 클래스를 사용합니다. 응용프로그램 지정 일치 표현식에서 일치하는 것이 발견되면 요청에는 연관된 파티션이 있습니다. ODR은 먼저 URL과 조회 문자열을 연결하여 단일 문자열을 구성하고 모든 응용프로그램 지정 일치 표현식에서 빌드된 패턴을 호출합니다. 일치하면 분류 공식은 파티션 이름의 빌드 방식을 판별합니다. 특수 문자 $는 사용할 일치 표현식의 부분을 표시합니다.
일치 표현식이 (user=)(*)$이고 분류 공식이 $2인 경우를 생각해 보십시오. $2는 (.*) 부분이 일치 패턴의 두 번째 부분이므로 이 부분에 해당하는 일치 부분을 사용합니다. 예를 들어, URL이 www.ibm.com/something/user=fred로 구성된 경우 $1은 user=에 해당하고 $2는 fred에 해당합니다.
일치 표현식 (user=)(*)(rodriguez)$를 생각해 보십시오. user=adolforodriguez가 포함된 URL을 사용하여 요청이 도착했다고 가정하십시오. 분류 공식이 $2일 때 결과 파티션 이름은 adolfo입니다. 분류 공식이 mypartition$2일 때 요청의 파티션 이름은 mypartitionadolfo입니다. 마찬가지로 분류 공식이 $2$3일 때 결과 파티션 이름은 adolforodriguez입니다.
또한 일치 표현식이 겹칠 수 있다는 점을 유의하십시오. 예를 들어, (user=)(*)$ 및 (user=)(*)&의 두 가지 일치 표현식이 있으며 user=adolfo&Submit=Enter가 포함된 조회 문자열과 함께 URL을 수신한 경우 두 표현식이 모두 일치합니다. 앞의 표현식은 $2 분류 공식으로 adolfo&Submit=Enter를 추출하고 뒤의 표현식은 adolfo를 추출합니다. adolfo만이 유효한 파티션 이름이므로 파티션 이름으로 선택됩니다. 일반적으로 "가장 구체적인" 일반 표현식이 원하는 목표이지만 HTTP 파티션 기능은 다른 표현식보다 특정 표현식을 선호하려고 합니다. 대신 유효한 파티션 이름이 있거나 파티션 이름이 발견되지 않을 때까지 모든 표현식이 적용됩니다.
Related concepts
HTTP 파티션