3.7.4. 엔터프라이즈 아카이브에서 하위 배포 간 세션 공유 구성

JBoss EAP는 EAR에 포함된 WAR 모듈 하위 배포 간 세션을 공유하도록 EAR(Enterprise Archives)를 구성할 수 있는 기능을 제공합니다. 이 기능은 기본적으로 비활성화되어 있으며 EAR의 META-INF/jboss-all.xml 파일에서 명시적으로 활성화해야 합니다.

중요

이 기능은 표준 서블릿 기능이 아니므로 이 기능을 활성화하면 애플리케이션이 이식되지 않을 수 있습니다.

EAR 내에서 WAR 간 세션 공유를 활성화하려면 EAR의 META -INF/jboss-all.xml에서 shared-session-config 요소를 선언해야 합니다.

예제: META-INF/jboss-all.xml

<jboss xmlns="urn:jboss:1.0">
  ...
  <shared-session-config xmlns="urn:jboss:shared-session-config:2.0">
  </shared-session-config>
  ...
</jboss>

shared-session-config 요소는 EAR 내의 모든 WAR에 대해 공유 세션 관리자를 구성하는 데 사용됩니다. shared-session-config 요소가 있으면 EAR 내의 모든 WAR가 동일한 세션 관리자를 공유합니다. 여기에서 변경한 내용은 EAR에 포함된 모든 WAR에 영향을 미칩니다.

3.7.4.1. 공유 세션 구성 옵션 참조

예제: META-INF/jboss-all.xml

<jboss xmlns="urn:jboss:1.0">
    <shared-session-config xmlns="urn:jboss:shared-session-config:2.0">
    	<distributable/>
        <max-active-sessions>10</max-active-sessions>
        <session-config>
            <session-timeout>0</session-timeout>
            <cookie-config>
                <name>JSESSIONID</name>
                <domain>domainName</domain>
                <path>/cookiePath</path>
                <comment>cookie comment</comment>
                <http-only>true</http-only>
                <secure>true</secure>
                <max-age>-1</max-age>
            </cookie-config>
            <tracking-mode>COOKIE</tracking-mode>
        </session-config>
        <replication-config>
            <cache-name>web</cache-name>
            <replication-granularity>SESSION</replication-granularity>
        </replication-config>
    </shared-session-config>
</jboss>

요소설명

shared-session-config

공유 세션 구성의 루트 요소입니다. META-INF/jboss-all.xml 에 있는 경우 EAR에 포함된 배포된 모든 WAR는 단일 세션 관리자를 공유합니다.

배포 가능

배포 가능한 세션 관리자를 사용해야 함을 지정합니다. 스키마 버전 2.0부터 배포 불가능한 세션 관리자가 기본적으로 사용됩니다. 버전 1.0의 경우 배포 가능한 세션 관리자는 계속 기본 세션 관리자입니다.

max-active-sessions

허용된 최대 세션 수.

session-config

EAR에 포함된 모든 배포된 WAR에 대한 세션 구성 매개 변수를 포함합니다.

session-timeout

EAR에 포함된 배포된 WAR에 생성된 모든 세션의 기본 세션 시간 제한 간격을 정의합니다. 지정된 시간 초과는 정수(분)로 표시되어야 합니다. 시간 제한이 0 이하이면 컨테이너에서 세션의 기본 동작이 시간 초과되지 않도록 합니다. 이 요소를 지정하지 않으면 컨테이너에서 기본 시간 초과 기간을 설정해야 합니다.

aws-config

EAR에 포함된 배포된 WAR에 의해 생성된 세션 추적 쿠키의 구성이 포함되어 있습니다.

name

EAR에 배포된 WAR로 생성된 모든 세션 추적 쿠키에 할당되는 이름입니다. 기본값은 JSESSIONID 입니다.

domain

EAR에 배포된 WAR에 의해 생성된 모든 세션 추적 쿠키에 할당되는 도메인 이름입니다.

경로

EAR에 배포된 WAR에 의해 생성된 모든 세션 추적 쿠키에 할당되는 경로입니다.

설명

EAR에 배포된 WAR에 의해 생성된 모든 세션 추적 쿠키에 할당되는 주석입니다.

http-only

EAR에 포함된 배포된 WAR에서 생성한 세션 추적 쿠키를 HttpOnly 로 표시할지 여부를 지정합니다.

보안

해당 세션을 시작한 요청이 HTTPS 대신 일반 HTTP를 사용하는 경우에도 EAR에 포함된 배포된 WAR에서 생성한 세션 추적 쿠키가 안전한 것으로 표시되는지 여부를 지정합니다.

최대 크기

EAR에 배포된 WAR에서 생성한 모든 세션 추적 쿠키에 할당되는 수명(초)입니다. 기본값은 -1 입니다.

tracking-mode

EAR에 포함된 배포된 WAR에서 생성한 세션의 추적 모드를 정의합니다.

replication-config

HTTP 세션 클러스터링 구성을 포함합니다.

cache-name

이 옵션은 클러스터링에만 사용됩니다. 세션 데이터를 저장할 Infinispan 컨테이너의 이름과 캐시를 지정합니다. 명시적으로 설정하지 않은 경우 기본값은 애플리케이션 서버에 의해 결정됩니다. 캐시 컨테이너 내에서 특정 캐시를 사용하려면 container.cache 양식(예: web. dist )을 사용합니다. name이 정규화되지 않은 경우 지정된 컨테이너의 기본 캐시가 사용됩니다.

replication-granularity

이 옵션은 클러스터링에만 사용됩니다. 이는 세션 복제 세분화 수준을 결정합니다. 가능한 값은 SESSIONATTRIBUTE 이며 기본값은 SESSION 입니다.

SESSION 세분화가 사용되는 경우 요청 범위 내에서 수정된 경우 모든 세션 특성이 복제됩니다. 이 정책은 여러 세션 특성에서 오브젝트 참조를 공유하는 경우 필요합니다. 그러나 세션 속성이 충분히 크거나 수정되지 않는지 여부와 관계없이 모든 속성을 복제해야 하므로 이는 세션 속성이 충분히 크거나 수정되지 않는 경우 비효율적일 수 있습니다.

ATTRIBUTE 세분화가 사용되는 경우 요청 범위 내에서 수정된 특성만 복제됩니다. 오브젝트 참조를 여러 세션 특성으로 공유하는 경우에는 이 정책이 적합하지 않습니다. 세션 속성이 충분히 크거나/또는 자주 수정되지 않는 경우 SESSION granularity보다 더 효율적일 수 있습니다.