Merge remote-tracking branch 'origin/jenkins_with_weblogic' of C:/eactive/bundle/bundles/20251230/eapim-admin_incremental_2025-12-01.bundle into jenkins_with_weblogic

This commit is contained in:
daekuk
2025-12-30 11:17:10 +09:00
12 changed files with 107 additions and 30 deletions
@@ -0,0 +1,46 @@
package com.eactive.eai.rms.common.login;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.apache.log4j.Logger;
@WebListener
public class SessionDestructionListener implements HttpSessionListener {
private static final Logger logger = Logger.getLogger(SessionDestructionListener.class);
@Override
public void sessionCreated(HttpSessionEvent se) {
}
/**
* 세션 타임아웃 등으로 소멸 시 세션정보 삭제
*/
@Override
public void sessionDestroyed(HttpSessionEvent se) {
try {
HttpSession session = se.getSession();
String userId = (String) session.getAttribute("userId");
// 로그인 한 사용자의 세션정보 정리
if (userId != null) {
if (logger.isDebugEnabled()) {
logger.debug("[SessionListener] 세션만료 감지. 사용자 제거: " + userId);
}
SessionManager.removeUserSession(userId);
}
} catch (Exception e) {
logger.error("[SessionListener] 세션 정리 중 오류 발생", e);
}
}
}
@@ -1,21 +1,31 @@
package com.eactive.eai.rms.data.entity.onl.authserver;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.eactive.eai.data.entity.onl.authserver.QScopeEntity;
import com.eactive.eai.data.entity.onl.authserver.ScopeEntity;
import com.eactive.eai.data.entity.onl.authserver.ScopeEntityId;
import com.eactive.eai.data.jpa.AbstractDataService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class ScopeEntityService extends AbstractDataService<ScopeEntity, ScopeEntityId, ScopeEntityEMSRepository> {
@PersistenceContext
private EntityManager entityManager; // AbstractDataService 의 entityManager가 private이라 접근 불가하여 별도 주입
public void deleteByIdScopeId(String scopeId) {
getJPAQueryFactory().delete(QScopeEntity.scopeEntity)
.where(QScopeEntity.scopeEntity.id.scopeid.eq(scopeId))
.execute();
// 동일 트랜잭션 내에서 같은 ID로 재저장 시 충돌(EntityExistsException)을 방지
entityManager.flush();
entityManager.clear();
}
}
@@ -310,8 +310,6 @@ public class EAIMessageService extends AbstractDataService<EAIMessageEntity, Str
.on(qScopeEntity.id.scopeid.eq(qScopeInfo.scopeId))
.where(predicate)
.orderBy(qScopeEntity.id.bzwksvckeyname.asc())
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();
return new PageImpl<>(result, pageable, result.size());
@@ -320,7 +318,7 @@ public class EAIMessageService extends AbstractDataService<EAIMessageEntity, Str
private BooleanExpression booleanPredicate(QEAIMessageEntity qEaiMessageEntity, QScopeEntity qScopeEntity,
QScopeInfo qScopeInfo, ApiScopeSearch apiScopeSearch) {
BooleanExpression predicate = qScopeEntity.id.scopeid.containsIgnoreCase(apiScopeSearch.getSearchScopeId());
BooleanExpression predicate = qScopeEntity.id.scopeid.equalsIgnoreCase(apiScopeSearch.getSearchScopeId());
// BooleanExpression predicate = qEaiMessageEntity.eaisvcdesc.containsIgnoreCase(apiScopeSearch.getSearchEaiSvcDesc());
// if(StringUtils.isNotBlank(apiScopeSearch.getSearchBzwkSvcKeyName())) {
@@ -7,4 +7,5 @@ public class ApiGroupUISearch {
private String searchGroupName;
private String searchGroupDesc;
private String searchDisplayYn;
private String searchApiFullPath;
}
@@ -7,6 +7,14 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.eactive.eai.agent.command.CommonCommand;
import com.eactive.eai.rms.common.base.OnlBaseAnnotationController;
import com.eactive.eai.rms.common.combo.ComboService;
import com.eactive.eai.rms.common.combo.ComboVo;
import com.eactive.eai.rms.common.vo.GridResponse;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -16,14 +24,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.eactive.eai.agent.command.CommonCommand;
import com.eactive.eai.rms.common.base.OnlBaseAnnotationController;
import com.eactive.eai.rms.common.combo.ComboService;
import com.eactive.eai.rms.common.combo.ComboVo;
import com.eactive.eai.rms.common.vo.GridResponse;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
@Controller
public class InflowGroupControlManController extends OnlBaseAnnotationController {
@@ -78,7 +78,7 @@ public class InflowGroupControlManController extends OnlBaseAnnotationController
* 그룹 저장 (INSERT)
*/
@RequestMapping(value = "/onl/admin/inflow/inflowGroupControlMan.json", params = "cmd=INSERT")
public String insert(HttpServletRequest request, HttpServletResponse response, InflowGroupControlManUI ui,
public ResponseEntity<Void> insert(HttpServletRequest request, HttpServletResponse response, InflowGroupControlManUI ui,
@RequestParam(value = "interfaceListJson", required = false) String interfaceListJson) throws Exception {
parseInterfaceList(ui, interfaceListJson);
String modifiedBy = getSessionUserId(request);
@@ -88,14 +88,14 @@ public class InflowGroupControlManController extends OnlBaseAnnotationController
CommonCommand command = new CommonCommand("com.eactive.eai.agent.inflow.ReloadInflowGroupControlCommand",
ui.getGroupId());
agentUtilService.broadcast(command);
return null;
return ResponseEntity.ok().build();
}
/**
* 그룹 저장 (UPDATE)
*/
@RequestMapping(value = "/onl/admin/inflow/inflowGroupControlMan.json", params = "cmd=UPDATE")
public String update(HttpServletRequest request, HttpServletResponse response, InflowGroupControlManUI ui,
public ResponseEntity<Void> update(HttpServletRequest request, HttpServletResponse response, InflowGroupControlManUI ui,
@RequestParam(value = "interfaceListJson", required = false) String interfaceListJson) throws Exception {
parseInterfaceList(ui, interfaceListJson);
String modifiedBy = getSessionUserId(request);
@@ -105,21 +105,21 @@ public class InflowGroupControlManController extends OnlBaseAnnotationController
CommonCommand command = new CommonCommand("com.eactive.eai.agent.inflow.ReloadInflowGroupControlCommand",
ui.getGroupId());
agentUtilService.broadcast(command);
return null;
return ResponseEntity.ok().build();
}
/**
* 그룹 삭제
*/
@RequestMapping(value = "/onl/admin/inflow/inflowGroupControlMan.json", params = "cmd=DELETE")
public String delete(HttpServletRequest request, HttpServletResponse response, String groupId) throws Exception {
public ResponseEntity<Void> delete(HttpServletRequest request, HttpServletResponse response, String groupId) throws Exception {
service.deleteGroup(groupId);
// Agent Command 전송
CommonCommand command = new CommonCommand("com.eactive.eai.agent.inflow.RemoveInflowGroupControlCommand",
groupId);
agentUtilService.broadcast(command);
return null;
return ResponseEntity.ok().build();
}
/**
@@ -171,7 +171,8 @@ public class Transform2Service extends BaseService {
private String genConversionSourceItems(String srcLayoutName, String cnvsncmdname) {
Pattern pattern = Pattern.compile(srcLayoutName + "(\\w|\\[|\\]|\\*|\\.|-|:)*");
// \uAC00-\uD7A3 : 한글 전체 ('가' ~ '힣')
Pattern pattern = Pattern.compile(srcLayoutName + "[\\w\\.\\[\\]\\*\\-:\\uAC00-\\uD7A3]*");
Matcher matcher = pattern.matcher(cnvsncmdname);
StringBuilder result = new StringBuilder();
@@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
@@ -52,7 +53,7 @@ public class StdMessageManController extends BaseController {
@PostMapping(value = "/onl/admin/service/stdMessageMan.json", params = "cmd=LIST")
public ResponseEntity<GridResponse<StdMessageUI>> selectList(Pageable pageable, String searchBzwkSvcKeyName,
String searchEaiSvcCode, String searchEaiSendRecv, String searchEaiDirection) {
List<StdMessageUI> map = service
Page<StdMessageUI> map = service
.selectList(pageable, searchBzwkSvcKeyName, searchEaiSvcCode, searchEaiSendRecv, searchEaiDirection);
return ResponseEntity.ok(new GridResponse<>(map));
@@ -16,6 +16,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -59,14 +60,13 @@ public class StdMessageManService {
@Autowired
private ExtendedColumnDefinitionUIMapper extendedColumnDefinitionUIMapper;
public List<StdMessageUI> selectList(Pageable pageable, String searchBzwkSvcKeyName, String searchEaiSvcCode,
public Page<StdMessageUI> selectList(Pageable pageable, String searchBzwkSvcKeyName, String searchEaiSvcCode,
String searchEaiSendRecv, String searchEaiDirection) {
return standardMessageInfoService
.findAll(pageable, searchBzwkSvcKeyName, searchEaiSvcCode, searchEaiSendRecv, searchEaiDirection)
.stream()
.map(stdMessageUIMapper::toVo)
.collect(Collectors.toList());
Page<StandardMessageInfo> pageResult = standardMessageInfoService
.findAll(pageable, searchBzwkSvcKeyName, searchEaiSvcCode, searchEaiSendRecv, searchEaiDirection);
return pageResult.map(stdMessageUIMapper::toVo);
}