-
JEUS 중복로그인 설정 1탄WAS/JEUS 2025. 5. 13. 16:35

개발 목적으로 Webtob/JEUS 구성을 위한 분들을 위한 가이드 포스팅 :)
TmaxSoft Engineer의 설치방식으로 진행되며, JEUS는 11년 연속 국내 1위 미들웨어입니다.
✅ JEUS 중복 로그인 - Application 설정

이번 글에서는 JEUS의 중복 로그인 방지 기능에 대해 정리하고,
동작을 위한 사전 Application 설정 내용을 공유합니다.
1. JEUS의 중복 로그인 방지 기능
클러스터 환경에서 사용자의 세션을 서버 전체에서 단일 세션으로 제한할 수 있는 중복 로그인 방지 기능을 제공합니다.
- 중복 로그인 제한 설정: JEUS 관리도구에서 <session-manager> 설정을 통해 가능
- 세션 충돌 시 정책: 기존 세션 강제 종료 or 새로운 세션 차단 등 선택 가능
- 서버 간 세션 동기화: 백업 서버와 세션 공유를 통해 정확한 중복 로그인 제어 가능
보다 자세한 JEUS 공식 설명은 다음 링크를 참고하세요: JEUS 온라인 메뉴얼: 2.5.1 중복 로그인 방지 기능
2. 중요 설정
1. jeus-web-dd.xml 설정
PATH: ~/WEB-INF/jeus-web-dd.xml
<?xml version="1.0" encoding="UTF-8"?><jeus-web-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="8.0"> <webinf-first> <enabled>false</enabled> </webinf-first> <use-jeus-login-manager>true</use-jeus-login-manager> <properties> <property> <key>jeus.application.login.key</key> <value>loginUser</value> </property> </properties> </jeus-web-dd>⚡ 주의
다른 포스팅 글을 참고하여 구현할 때, <key>와 <value>의 값을 반대로 기입하는 경우가 많습니다.
반드시 key는 jeus.application.login.key 를 사용하고 value는 임의 값(ex: loginUser)을 지정해야합니다.
해당 설정이 어긋나지 않아야 JEUS에서 정상 중복로그인을 처리할 수 있습니다.
2. 로그인 처리시 setAttribute() 메서드를 통해 사용자 정보를 세션에 바인딩
loginCheck.jsp
📌 용도: 로그인 요청을 처리하며, 사용자 인증 정보를 확인한 뒤 세션을 생성합니다.
<% String username = request.getParameter("username"); String password = request.getParameter("password"); // 테스트 계정 String validUser = "testuser"; String validPass = "1234"; if (validUser.equals(username) && validPass.equals(password)) { session.setAttribute("loginUser", username); response.sendRedirect("main.jsp"); } else { response.sendRedirect("login.jsp?error=1"); } %>- session.setAttribute("loginUser", ...)로 로그인 세션 생성
- 인증 실패 시 로그인 페이지로 다시 리디렉션
⚡ 주의
jeus-web-dd.xml의 <value> 값과 session.setAttribute()의 Session-key는 반드시 일치해야 합니다.
예를 들어, 아래와 같이 설정한 경우:
<property> <key>jeus.application.login.key</key> <value>loginUser</value> </property>다음과 같이 일치시켜야 합니다:
session.setAttribute("loginUser", username);
3. 테스트 코드
1.
main.jsp📌 용도: 로그인 후 이동되는 메인 페이지로,
sessionCheck.jsp를 포함하여 세션 유효성을 검사합니다.<%@ include file="sessionCheck.jsp" %> <%@ page contentType="text/html;charset=UTF-8" %> ... <div class="main-box"> <h2>Welcome, <%= session.getAttribute("loginUser") %>! 👋</h2> <p>You are logged in successfully.</p> <button onclick="checkSession()">세션 상태 확인</button> </div> ...- 세션이 없으면
sessionCheck.jsp에서 팝업 발생 - 버튼 클릭 시
sessionCheckAjax.jsp를 AJAX로 호출하여 세션 상태 확인
2.
sessionCheck.jsp📌 용도: 세션이 없을 경우 팝업 알림을 띄운 후
login.jsp로 이동합니다. include 전용 JSP(main.jsp)입니다.<% Object loginUser = session.getAttribute("loginUser"); if (loginUser == null) { %> <script> alert("현재 세션이 종료되었습니다.\n문의: ko-o.tistory.com"); window.location.href = "login.jsp"; </script> <% return; } %>loginUser세션 값이 없으면 alert() 출력 후 로그인 페이지로 이동- main.jsp 등에서 include되어 사용할 수 있도록 설계됨
3.
sessionCheckAjax.jsp📌 용도: JavaScript에서
fetch()를 통해 세션 상태를 확인할 수 있도록 JSON 형태로 응답합니다.현재 구현에서는 사용자가 버튼을 클릭할 때만 호출되며, 자동 감지 기능은 포함되어 있지 않습니다.
<%@ page contentType="application/json; charset=UTF-8" %> <% response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); Object loginUser = session.getAttribute("loginUser"); String status = (loginUser != null) ? "OK" : "INVALID"; response.getWriter().write("{\\"status\\":\\"" + status + "\\"}"); %>fetch('sessionCheckAjax.jsp')호출 시{"status":"OK"}또는{"status":"INVALID"}응답- 현재는 버튼 클릭 시에만 요청되며, 사용자 수동 확인 방식으로 동작
- 주기적 자동 확인이 필요하다면
setInterval()등을 활용한 추가 구현 필요
✅ 마무리
중복 로그인 방지 기능은 단순 설정을 넘어서, JSP 코드 구조와 UX 흐름까지 연결되어야 실제 서비스 품질로 이어집니다.
아직 중복로그인을 설정이 끝난 것이 아닙니다.(여기까지하면 Application 준비 끝)이렇게 Application에서 준비하고 후에 JEUS에 setting까지 해야 중복로그인 동작이 됩니다.
다음 포스팅에서는 클러스터의 각 모드별로 중복로그인 설정 부분을 다루도록 하겠습니다

JEUS의 중복 로그인 방지 기능은 WAS level에서 세션을 제어할 수 있는 기능이며
편의성을 위해서 제공된 것으로 커스텀은 거의 불가합니다.
그리고 JEUS에서 중복로그인 기능을 사용할 경우 필수 패치 적용 후 사용하는 것이 메모리 누수를 예방할 수 있습니다.
본 테스트는 JEUS 8.5 기준으로 진행됩니다.
'WAS > JEUS' 카테고리의 다른 글
JEUS 중복로그인 설정 3탄(Cluster Mode. DOMAIN_WIDE) (0) 2025.05.14 JEUS 중복로그인 설정 2탄 (Cluster Mode. DEFAULT) (0) 2025.05.13 JEUS DOMAIN_WIDE Session 공유 (3) 2024.11.25 JEUS 웹어드민(webadmin) 특정 IP 허용 외 차단 (0) 2024.06.05 JEUS 2024년 변경된 Demo License 발급 정책 (0) 2024.03.14