본문으로 건너뛰기

2.2. 설정 항목

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

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

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

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

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

이름을 바꾸는 규칙은 낱말 경계에 기호를 넣는 것입니다 — sessionTimeoutKSM_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.iowww.openmaru.io)(없음)
path세션을 공유할 경로. 서로 다른 웹 애플리케이션끼리 공유하려면 / 로 설정합니다/
secure쿠키의 Secure 옵션. HTTPS 로만 쿠키를 보냅니다false
httpOnly쿠키의 HttpOnly 옵션. 자바스크립트에서 쿠키를 읽지 못하게 합니다false
sameSite쿠키의 SameSite 옵션(없음)

세션 동작

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

중복 로그인

설정 이름설명기본값
allowDuplicateLogin중복 로그인 허용 여부. 기본이 false 이므로 중복 로그인 방지가 처음부터 켜져 있습니다. 허용하려면 true 로 넣습니다false
duplicateLoginPolicy중복 로그인 정책. none 은 아무 동작도 하지 않고, legacy 는 이전에 로그인한 사용자를 로그아웃시키며, custom 은 중복 로그인된 세션 목록으로 관리합니다. allowDuplicateLogintrue 면 이 값은 무시되고 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

configFileOPENMARU_CONFIG_FILE 환경변수로도 지정할 수 있습니다.