본문으로 건너뛰기

2.2. 설정 항목

각 설정은 세 가지 방법으로 넣을 수 있습니다 — web.xml(또는 addInitParameter), 환경변수, JVM 시스템 프로퍼티. 어느 방법으로 넣든 결과는 같습니다.

아래 "항목과 기본값" 은 web.xml 기준 이름으로 정리했습니다. 환경변수와 시스템 프로퍼티로 넣을 때 쓰는 이름은 그 아래 "이름 대응표" 에 있습니다.

셋을 함께 쓰면 다음 순서로 이깁니다.

1. 환경변수 KSM_SESSION_TIMEOUT ← 가장 세다
2. 시스템 프로퍼티 ksm.session.timeout
3. web.xml <param-name>sessionTimeout

같은 이미지를 여러 환경(개발·검증·운영)에 배포할 때 유용합니다. 애플리케이션은 그대로 두고 환경변수만 바꿔 동작을 조정할 수 있습니다.

이름을 바꾸는 규칙은 낱말 경계에 기호를 넣는 것입니다 — sessionTimeout → KSM_SESSION_TIMEOUT(환경변수) → ksm.session.timeout(시스템 프로퍼티).

web.xml 의 값 자체에도 ${변수:기본값} 을 쓸 수 있습니다. 예를 들어 <param-value>${session.timeout:30}</param-value> 은 시스템 프로퍼티 session.timeout 이 있으면 그 값을, 없으면 30 을 씁니다.

항목과 기본값​

기본값은 소스의 KhanSessionFilter.getSessionFilterConfig() 기준입니다. 넣지 않으면 이 값이 쓰입니다.

저장소 연결​

설정 이름설명기본값
configFile세션 저장소 접속 정보를 담은 파일 이름 (2단계에서 만든 파일)없음 — 반드시 넣어야 합니다. 없으면 기동 시 오류가 납니다
infinispanCache세션 메타 정보를 담을 캐시 이름KHAN_SESSION
infinispanLoginCache세션 데이터를 담을 캐시 이름KHAN_SESSION_LOGIN
namespace저장소 키 앞에 붙는 이름. 한 저장소를 여러 시스템이 나눠 쓸 때 구분합니다KHAN

쿠키​

설정 이름설명기본값
sessionId세션을 식별하는 쿠키 이름. WAS 의 JSESSIONID 는 그대로 두고 이 쿠키가 추가되며, 데이터그리드에서 세션을 찾을 때는 이 값을 씁니다__KSMSID__
domain세션을 공유할 도메인. 하위 도메인만 다른 경우 공유할 수 있습니다 (예: login.openmaru.io 와 www.openmaru.io)(없음)
path세션을 공유할 경로. 서로 다른 웹 애플리케이션끼리 공유하려면 / 로 설정합니다/
secure쿠키의 Secure 옵션. HTTPS 로만 쿠키를 보냅니다false
httpOnly쿠키의 HttpOnly 옵션. 자바스크립트에서 쿠키를 읽지 못하게 합니다false
sameSite쿠키의 SameSite 옵션(없음)

세션 동작​

설정 이름설명기본값
sessionTimeout세션 타임아웃(분). 숫자가 아닌 값을 넣으면 기본값이 쓰이고 오류가 로그에 남습니다10
sessionSaveDelay세션을 저장소에 쓰기까지 미루는 시간(초). 0 이면 미루지 않습니다0
excludeRegExp세션을 만들지 않을 요청 경로(정규식). 이미지·CSS 같은 정적 파일에 세션이 생기지 않게 합니다(없음 — 넣지 않으면 모든 요청에 세션이 생깁니다)
enableImmediateSavetrue 면 setAttribute() 를 호출할 때마다 즉시 저장소에 저장합니다false
enableImmediateReadtrue 면 세션 값을 읽을 때마다 저장소에서 바로 읽습니다false
useLibraryMode라이브러리 모드로 동작합니다. 원격 데이터그리드 모드에서는 쓰지 않습니다false
useAuthenticatorWAS 인증 연동을 사용합니다false

중복 로그인​

설정 이름설명기본값
allowDuplicateLogin중복 로그인 허용 여부. 기본이 false 이므로 중복 로그인 방지가 처음부터 켜져 있습니다. 허용하려면 true 로 넣습니다false
duplicateLoginPolicy중복 로그인 정책. none 은 아무 동작도 하지 않고, legacy 는 이전에 로그인한 사용자를 로그아웃시키며, custom 은 중복 로그인된 세션 목록으로 관리합니다. allowDuplicateLogin 이 true 면 이 값은 무시되고 legacy 로 고정됩니다legacy
invalidateDuplicateLogin중복 로그인을 찾았을 때 기존 세션을 자동으로 무효화할지 여부. false 면 세션을 유지하고 로그아웃 URL 로만 보냅니다false
duplicateLoginExclustionType중복 로그인 검사에서 제외할 사용자 유형. 여러 개면 쉼표로 구분합니다(없음)
logoutUrl중복 로그인을 찾았을 때 보낼 로그아웃 URL. 비워 두면 보내지 않습니다(빈 문자열)

모니터링​

설정 이름설명기본값
enableStatistics세션 지표를 MBean 으로 노출합니다. 기본이 켜짐입니다. 끄려면 false 를 넣습니다true
enableMemoryStatistics세션 메모리 사용량을 함께 측정합니다. 자바 에이전트 설정이 필요합니다false

이름 대응표​

같은 설정을 환경변수나 JVM 시스템 프로퍼티로 넣을 때 쓰는 이름입니다.

설정 이름 (web.xml)환경변수JVM 시스템 프로퍼티
configFileKSM_CONFIG_FILEksm.config.file
namespaceKSM_NAMESPACEksm.namespace
infinispanCacheKSM_INFINISPAN_CACHEksm.infinispan.cache
infinispanLoginCacheKSM_INFINISPAN_LOGIN_CACHEksm.infinispan.login.cache
sessionIdKSM_SESSION_IDksm.session.id
domainKSM_DOMAINksm.domain
pathKSM_PATHksm.path
secureKSM_SECUREksm.secure
httpOnlyKSM_HTTP_ONLYksm.http.only
sameSiteKSM_SAME_SITEksm.same.site
sessionTimeoutKSM_SESSION_TIMEOUTksm.session.timeout
sessionSaveDelayKSM_SESSION_SAVE_DELAYksm.session.save.delay
excludeRegExpKSM_EXCLUDE_REG_EXPksm.exclude.reg.exp
allowDuplicateLoginKSM_ALLOW_DUPLICATE_LOGINksm.allow.duplicate.login
duplicateLoginPolicyKSM_DUPLICATE_LOGIN_POLICYksm.duplicate.login.policy
invalidateDuplicateLoginKSM_INVALIDATE_DUPLICATE_LOGINksm.invalidate.duplicate.login
duplicateLoginExclustionTypeKSM_DUPLICATE_LOGIN_EXCLUSTION_TYPEksm.duplicate.login.exclustion.type
logoutUrlKSM_LOGOUT_URLksm.logout.url
enableImmediateSaveKSM_ENABLE_IMMEDIATE_SAVEksm.enable.immediate.save
enableStatisticsKSM_ENABLE_STATISTICSksm.enable.statistics
enableMemoryStatisticsKSM_ENABLE_MEMORY_STATISTICSksm.enable.memory.statistics
enableImmediateReadKSM_ENABLE_IMMEDIATE_READksm.enable.immediate.read
useLibraryModeKSM_USE_LIBRARY_MODEksm.use.library.mode
useAuthenticatorKSM_USE_AUTHENTICATORksm.use.authenticator

configFile 은 OPENMARU_CONFIG_FILE 환경변수로도 지정할 수 있습니다.