Files
elink-online-common/src/main/java/com/eactive/eai/manage/session/SessionCacheManageController.java
T
curry772 afe2040b6e SessionManager 캐시 조회 관리 API 추가 (/manage/session)
SessionManagerForIgnite/SessionManagerForEhcache가 관리하는 login,
http-login, evict-master, terminal, convert-user-id, socket,
outbound-access-token 캐시를 조회할 수 있는 관리용 API를 추가한다.
outbound-access-token 캐시는 Ignite 백엔드에서만 지원하며, Ehcache
백엔드에서는 success=false로 응답하고 500을 반환하지 않는다.
2026-07-21 15:25:27 +09:00

105 lines
4.0 KiB
Java

package com.eactive.eai.manage.session;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.eactive.eai.common.session.CacheInfoVO;
/**
* SessionManager(SessionManagerForIgnite/SessionManagerForEhcache) 캐시 상태 모니터링 API.
*
* GET /manage/session/cache/status → 전체 캐시 요약 (구현체별 XML 텍스트, Ignite/Ehcache)
* GET /manage/session/cache/all → 개별 캐시(login/http-login/evict-master/terminal/convert-user-id/socket) 목록
* GET /manage/session/cache/login → 로그인(WebSocket) 캐시
* GET /manage/session/cache/http-login → HTTP 로그인 캐시
* GET /manage/session/cache/evict-master → 싱글 어댑터 evict master 캐시
* GET /manage/session/cache/terminal → 단말(ATM 등) 캐시
* GET /manage/session/cache/convert-user-id → 단말ID → 사용자ID 변환 캐시
* GET /manage/session/cache/socket → 소켓 세션 캐시
* GET /manage/session/cache/outbound-access-token → 아웃바운드 AccessTokenVO 캐시 (Ignite 백엔드에서만 지원)
* GET /manage/session/master-inst-id → 현재 evict master 인스턴스명
*/
@RestController
@RequestMapping("/manage/session")
public class SessionCacheManageController {
@Autowired
private SessionCacheManageService sessionCacheManageService;
@GetMapping("/cache/status")
public ResponseEntity<?> getCacheStatus() {
return ok(sessionCacheManageService.getCacheStatus());
}
@GetMapping("/master-inst-id")
public ResponseEntity<?> getMasterInstId() {
return ok(sessionCacheManageService.getMasterInstId());
}
@GetMapping("/cache/all")
public ResponseEntity<?> getAllCaches() {
List<CacheInfoVO> list = sessionCacheManageService.getAllCaches();
Map<String, Object> result = new HashMap<>();
result.put("success", true);
result.put("data", list);
result.put("count", list.size());
return ResponseEntity.ok(result);
}
@GetMapping("/cache/login")
public ResponseEntity<?> getLoginCache() {
return ok(sessionCacheManageService.getLoginCache());
}
@GetMapping("/cache/http-login")
public ResponseEntity<?> getHttpLoginCache() {
return ok(sessionCacheManageService.getHttpLoginCache());
}
@GetMapping("/cache/evict-master")
public ResponseEntity<?> getEvictMasterCache() {
return ok(sessionCacheManageService.getEvictMasterCache());
}
@GetMapping("/cache/terminal")
public ResponseEntity<?> getTerminalCache() {
return ok(sessionCacheManageService.getTerminalCache());
}
@GetMapping("/cache/convert-user-id")
public ResponseEntity<?> getConvertUserIdCache() {
return ok(sessionCacheManageService.getConvertUserIdCache());
}
@GetMapping("/cache/socket")
public ResponseEntity<?> getSocketCache() {
return ok(sessionCacheManageService.getSocketCache());
}
@GetMapping("/cache/outbound-access-token")
public ResponseEntity<?> getOutboundAccessTokenCache() {
try {
return ok(sessionCacheManageService.getOutboundAccessTokenCache());
} catch (UnsupportedOperationException e) {
Map<String, Object> result = new HashMap<>();
result.put("success", false);
result.put("message", "현재 SessionManager 백엔드는 OutboundAccessToken 캐시를 지원하지 않습니다.");
return ResponseEntity.ok(result);
}
}
private ResponseEntity<?> ok(Object data) {
Map<String, Object> result = new HashMap<>();
result.put("success", true);
result.put("data", data);
return ResponseEntity.ok(result);
}
}