6.7. 배포 가능한 웹 세션 구성의 distributable-web 하위 시스템

D istributable-web 하위 시스템은 유연하고 배포 가능한 웹 세션 구성을 용이하게 합니다. 하위 시스템은 배포 가능한 웹 세션 관리 프로필 집합을 정의합니다. 이러한 프로필 중 하나는 기본 프로필로 지정됩니다. 배포 가능한 웹 애플리케이션의 기본 동작을 정의합니다. 예를 들면 다음과 같습니다.

[standalone@embedded /] /subsystem=distributable-web:read-attribute(name=default-session-management)
{
    "outcome" => "success",
    "result" => "default"
}

기본 세션 관리는 다음 예제와 같이 Infinispan 캐시 내에 웹 세션 데이터를 저장합니다.

[standalone@embedded /] /subsystem=distributable-web/infinispan-session-management=default:read-resource
{
    "outcome" => "success",
    "result" => {
        "cache" => undefined,
        "cache-container" => "web",
        "granularity" => "SESSION",
        "affinity" => {"primary-owner" => undefined}
    }
}

이 예제에서 사용되는 속성과 가능한 값은 다음과 같습니다.

  • 캐시: 연결된 cache-container 내의 캐시. 웹 애플리케이션의 캐시는 이 캐시의 구성을 기반으로 합니다. 정의되지 않은 경우 연결된 캐시 컨테이너의 기본 캐시가 사용됩니다.
  • cache-container: 세션 데이터가 저장되는 Infinispan 하위 시스템에 정의된 cache-container입니다.
  • 세분화: 세션 관리자가 세션을 개별 캐시 항목에 매핑하는 방법을 정의합니다. 가능한 값은 다음과 같습니다.

    • 세션: 모든 세션 속성을 단일 캐시 항목 내에 저장합니다. ATTRIBUTE 단위보다 비용이 높지만 모든 교차 기여 개체 참조를 유지합니다.
    • 속성: 각 세션 속성을 별도의 캐시 항목 내에 저장합니다. SESSION 단위보다 효율적이지만 교차 기여 개체 참조는 유지하지 않습니다.
  • 유사성: 서버에 대해 웹 요청에 있어야 하는 선호도를 정의합니다. 관련 웹 세션의 선호도는 세션 ID에 추가할 경로를 생성하는 알고리즘을 결정합니다. 가능한 값은 다음과 같습니다.

    • affinity=none: 웹 요청에는 노드에 대한 선호도가 없습니다. 웹 세션 상태가 애플리케이션 서버 내에서 유지 관리되지 않는 경우 이 기능을 사용합니다.
    • affinity=local: 웹 요청에는 세션 요청을 마지막으로 처리한 서버와의 선호도가 있습니다. 이 옵션은 고정 세션 동작에 해당합니다.
    • affinity=primary-owner: 웹 요청에는 세션의 기본 소유자에 대한 선호도가 있습니다. 이는 이 분산 세션 관리자의 기본 선호도입니다. 백업 캐시가 분산되거나 복제되지 않은 경우 affinity=local 과 동일하게 작동합니다.
    • affinity=ranked: 웹 요청에는 기본 및 백업 소유자가 포함된 목록에서 사용 가능한 첫 번째 멤버와 마지막으로 세션을 처리하는 멤버에 대한 선호도가 있습니다.
    • affinity=ranked delimiter: 인코딩된 세션 식별자 내에서 개별 경로를 구분하는 데 사용되는 구분 기호입니다.
    • affinity=ranked max routes: 세션 식별자로 인코딩할 최대 경로 수입니다.

여러 순서로 정렬된 경로와 세션 선호도가 있으려면 로드 밸런서에서 순위 세션 선호도를 활성화해야 합니다. 자세한 내용은 JBoss EAP 구성 가이드에서 부하 분산에서 순위가 지정된 세션 선호도 활성화 를 참조하십시오.

이름별로 세션 관리 프로필을 참조하거나 배포별 세션 관리 구성을 제공하여 기본 배포 가능한 세션 관리 동작을 재정의할 수 있습니다. 자세한 내용은 Overide Default Distributable Session Management Behavior 를 참조하십시오.

6.7.1. 원격 Red Hat Data Grid에 웹 세션 데이터 저장

D istributable-web 하위 시스템은 HotRod 프로토콜을 사용하여 원격 Red Hat Data Grid 클러스터에 웹 세션 데이터를 저장하도록 구성할 수 있습니다. 원격 클러스터에 웹 세션 데이터를 저장하면 캐시 계층이 애플리케이션 서버와 독립적으로 확장할 수 있습니다.

설정 예:

[standalone@embedded /]/subsystem=distributable-web/hotrod-session-management=ExampleRemoteSessionStore:add(remote-cache-container=datagrid, cache-configuration=__REMOTE_CACHE_CONFIG_NAME__, granularity=ATTRIBUTE)
{
    "outcome" => "success"
}

이 예제에서 사용되는 속성과 가능한 값은 다음과 같습니다.

  • remote-cache-container: 웹 세션 데이터를 저장하기 위해 Infinispan 하위 시스템에 정의된 원격 캐시 컨테이너입니다.
  • cache-configuration: Red Hat Data Grid 클러스터의 캐시 구성 이름입니다. 새로 생성된 배포별 캐시는 이 구성을 기반으로 합니다.

    이름과 일치하는 원격 캐시 구성이 없으면 원격 컨테이너에 새 캐시 구성이 생성됩니다.

  • 세분화: 세션 관리자가 세션을 개별 캐시 항목에 매핑하는 방법을 정의합니다. 가능한 값은 다음과 같습니다.

    • 세션: 모든 세션 속성을 단일 캐시 항목 내에 저장합니다. ATTRIBUTE 단위보다 비용이 높지만 모든 교차 기여 개체 참조를 유지합니다.
    • 속성: 각 세션 속성을 별도의 캐시 항목 내에 저장합니다. SESSION 단위보다 효율적이지만 교차 기여 개체 참조는 유지하지 않습니다.