weblogic slf4j, logback 대응 / 포탈사용자 패스워드 강제 초기화 기능 추가
This commit is contained in:
@@ -13,12 +13,18 @@
|
|||||||
|
|
||||||
<container-descriptor>
|
<container-descriptor>
|
||||||
<prefer-application-packages>
|
<prefer-application-packages>
|
||||||
<package-name>org.apach.ignite.*</package-name>
|
<package-name>org.apache.ignite.*</package-name>
|
||||||
<package-name>org.slf4j.*</package-name>
|
<package-name>org.slf4j.*</package-name>
|
||||||
<package-name>ch.qos.logback.*</package-name>
|
<package-name>ch.qos.logback.*</package-name>
|
||||||
|
<package-name>org.apache.logging.log4j.*</package-name>
|
||||||
</prefer-application-packages>
|
</prefer-application-packages>
|
||||||
<prefer-application-resources>
|
<prefer-application-resources>
|
||||||
<resource-name>org/slf4j/impl/StaticLoggerBinder.class</resource-name>
|
<resource-name>org/slf4j/impl/StaticLoggerBinder.class</resource-name>
|
||||||
|
<resource-name>logback.xml</resource-name>
|
||||||
|
<resource-name>logback-dev.xml</resource-name>
|
||||||
|
<resource-name>logback-test.xml</resource-name>
|
||||||
|
<resource-name>logback-spring.xml</resource-name>
|
||||||
|
<resource-name>META-INF/services/org.slf4j.spi.SLF4JServiceProvider</resource-name>
|
||||||
</prefer-application-resources>
|
</prefer-application-resources>
|
||||||
</container-descriptor>
|
</container-descriptor>
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,13 @@
|
|||||||
<jsp:include page="/jsp/common/include/script.jsp"/>
|
<jsp:include page="/jsp/common/include/script.jsp"/>
|
||||||
<jsp:include page="/jsp/common/include/portal.jsp"/>
|
<jsp:include page="/jsp/common/include/portal.jsp"/>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#btn_password_reset:hover {
|
||||||
|
background-color: #c82333 !important;
|
||||||
|
border-color: #bd2130 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<script language="javascript">
|
<script language="javascript">
|
||||||
const url = '<c:url value="/onl/apim/portaluser/portalUserMan.json" />';
|
const url = '<c:url value="/onl/apim/portaluser/portalUserMan.json" />';
|
||||||
const url_view = '<c:url value="/onl/apim/portaluser/portalUserMan.view" />';
|
const url_view = '<c:url value="/onl/apim/portaluser/portalUserMan.view" />';
|
||||||
@@ -525,6 +532,25 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#btn_password_reset").click(function () {
|
||||||
|
if (!confirm("패스워드를 초기화 하시겠습니까?\n초기 패스워드는 '!' + 이메일ID 입니다.")) return;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: url,
|
||||||
|
data: {
|
||||||
|
cmd: "PASSWORD_RESET",
|
||||||
|
id: $('input[name=id]').val()
|
||||||
|
},
|
||||||
|
success: function () {
|
||||||
|
alert("패스워드가 초기화되었습니다.");
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
alert(e.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
@@ -542,8 +568,15 @@
|
|||||||
<i class="material-icons">lock_open</i> 마스킹해제
|
<i class="material-icons">lock_open</i> 마스킹해제
|
||||||
</button>--%>
|
</button>--%>
|
||||||
|
|
||||||
|
<button type="button" class="cssbtn" id="btn_password_reset" level="W" status="DETAIL"
|
||||||
|
style="background-color: #dc3545; border-color: #dc3545; color: white;">
|
||||||
|
<i class="material-icons">lock_reset</i> <%= localeMessage.getString("password_reset") %>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button type="button" class="cssbtn" id="btn_modify" level="W" status="DETAIL,NEW">
|
<button type="button" class="cssbtn" id="btn_modify" level="W" status="DETAIL,NEW">
|
||||||
<i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %>
|
<i class="material-icons">save</i> <%= localeMessage.getString("button.save") %>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="cssbtn" id="btn_delete" level="W" status="DETAIL">
|
<button type="button" class="cssbtn" id="btn_delete" level="W" status="DETAIL">
|
||||||
<i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %>
|
<i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %>
|
||||||
|
|||||||
@@ -1,9 +1,327 @@
|
|||||||
# eLink EMS(eLink Management System)
|
# EAPIM Admin
|
||||||
eLink 관리를 위한 웹 서비스로 전반적인 설정, 모니터링, 통계기능을 제공한다.
|
|
||||||
|
|
||||||
### 주요 기능
|
광주은행 엔터프라이즈 API 관리 시스템 - 관리 콘솔
|
||||||
|
|
||||||
다음과 같은 관리 기능을 수행하며, 모든 관리 대상은 실시간으로 DB, 메모리에 있는 정보가 수정,반영된다.
|
## 프로젝트 개요
|
||||||
|
|
||||||
|
**EAPIM Admin**은 광주은행의 eLink EMS (eLink Management System) 관리 콘솔로, API 게이트웨이 구성, 모니터링, 통계, 트랜잭션 로그 조회 기능을 제공하는 웹 기반 플랫폼입니다.
|
||||||
|
|
||||||
|
## 기술 스택
|
||||||
|
|
||||||
|
- Spring Framework 5.3.27
|
||||||
|
- Java 8
|
||||||
|
- Gradle 8.7
|
||||||
|
- Oracle 19c
|
||||||
|
- Spring Data JPA 2.5.2
|
||||||
|
- Hibernate 5.4.33/5.6.15
|
||||||
|
- QueryDSL 5.0.0
|
||||||
|
- iBATIS 2.3.4 (레거시 SQL 매핑)
|
||||||
|
- Quartz 2.2.1
|
||||||
|
- Logback 1.2.10
|
||||||
|
|
||||||
|
## 초기 세팅 가이드
|
||||||
|
|
||||||
|
### 사전 요구사항
|
||||||
|
|
||||||
|
- JDK 8 이상
|
||||||
|
- Gradle 8.7
|
||||||
|
- Git
|
||||||
|
- Oracle 19c (또는 개발 환경에 따라 접근 가능한 DB)
|
||||||
|
|
||||||
|
### Git Bash에서 초기 세팅
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# ====================================
|
||||||
|
# 1. 변수 설정 (프로젝트 경로 및 브랜치)
|
||||||
|
# ====================================
|
||||||
|
export WORKSPACE_DIR="/c/eactive/workspaces/kjb-eapim"
|
||||||
|
export PROJECT_BRANCH="jenkins_with_weblogic"
|
||||||
|
|
||||||
|
# Git Repository URL 설정
|
||||||
|
# 기본: ssh://git@192.168.240.178:18081/eapim
|
||||||
|
# 대체: https://git.eactive.synology.me:8090/kjb-eapim
|
||||||
|
export GIT_REPO_BASE="ssh://git@192.168.240.178:18081/eapim"
|
||||||
|
# export GIT_REPO_BASE="https://git.eactive.synology.me:8090/kjb-eapim"
|
||||||
|
|
||||||
|
# Gradle 명령어 설정
|
||||||
|
# 일반 환경: gradle
|
||||||
|
# msi-gf63 환경: /c/eactive/workspaces/shell-scripts/kjb-gradle.sh
|
||||||
|
export GRADLE_CMD="gradle"
|
||||||
|
# export GRADLE_CMD="/c/eactive/workspaces/shell-scripts/kjb-gradle.sh"
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# 2. 작업 디렉토리 생성
|
||||||
|
# ====================================
|
||||||
|
mkdir -p $WORKSPACE_DIR
|
||||||
|
cd $WORKSPACE_DIR
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# 3. eapim-admin 프로젝트 클론
|
||||||
|
# ====================================
|
||||||
|
git clone ${GIT_REPO_BASE}/eapim-admin.git
|
||||||
|
cd eapim-admin
|
||||||
|
|
||||||
|
# 프로젝트 브랜치로 체크아웃
|
||||||
|
git checkout $PROJECT_BRANCH
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# 4. eapim-online 프로젝트 클론 (코어 모듈 포함)
|
||||||
|
# ====================================
|
||||||
|
cd $WORKSPACE_DIR
|
||||||
|
git clone ${GIT_REPO_BASE}/eapim-online.git
|
||||||
|
cd eapim-online
|
||||||
|
git checkout $PROJECT_BRANCH
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# 5. 의존 모듈 클론
|
||||||
|
# ====================================
|
||||||
|
cd $WORKSPACE_DIR
|
||||||
|
|
||||||
|
# elink-portal-common 클론
|
||||||
|
git clone ${GIT_REPO_BASE}/elink-portal-common.git
|
||||||
|
cd elink-portal-common
|
||||||
|
git checkout master # 또는 필요한 브랜치
|
||||||
|
|
||||||
|
# kjb-safedb 클론
|
||||||
|
cd $WORKSPACE_DIR
|
||||||
|
git clone ${GIT_REPO_BASE}/kjb-safedb.git
|
||||||
|
cd kjb-safedb
|
||||||
|
git checkout master # 또는 필요한 브랜치
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# 6. 최종 폴더 구조 확인
|
||||||
|
# ====================================
|
||||||
|
# kjb-eapim/
|
||||||
|
# ├── eapim-admin/ # Admin 관리 콘솔 (현재 프로젝트)
|
||||||
|
# ├── eapim-online/ # Online 게이트웨이 코어 모듈
|
||||||
|
# │ ├── elink-online-core/
|
||||||
|
# │ ├── elink-online-core-jpa/
|
||||||
|
# │ ├── elink-online-transformer/
|
||||||
|
# │ ├── elink-online-common/
|
||||||
|
# │ ├── elink-online-emsclient/
|
||||||
|
# │ └── elink-online-adapter/
|
||||||
|
# ├── elink-portal-common/ # 포털 공통 컴포넌트 (JPA 엔티티)
|
||||||
|
# └── kjb-safedb/ # SafeDB 암호화 라이브러리
|
||||||
|
|
||||||
|
# ====================================
|
||||||
|
# 7. eapim-admin 프로젝트로 이동 및 디펜던시 다운로드
|
||||||
|
# ====================================
|
||||||
|
cd $WORKSPACE_DIR/eapim-admin
|
||||||
|
|
||||||
|
# Gradle 디펜던시 다운로드
|
||||||
|
$GRADLE_CMD dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows CMD에서 초기 세팅
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
REM ====================================
|
||||||
|
REM 1. 변수 설정 (프로젝트 경로 및 브랜치)
|
||||||
|
REM ====================================
|
||||||
|
set WORKSPACE_DIR=C:\eactive\workspaces\kjb-eapim
|
||||||
|
set PROJECT_BRANCH=jenkins_with_weblogic
|
||||||
|
|
||||||
|
REM Git Repository URL 설정
|
||||||
|
REM 기본: ssh://git@192.168.240.178:18081/eapim
|
||||||
|
REM 대체: https://git.eactive.synology.me:8090/kjb-eapim
|
||||||
|
set GIT_REPO_BASE=ssh://git@192.168.240.178:18081/eapim
|
||||||
|
REM set GIT_REPO_BASE=https://git.eactive.synology.me:8090/kjb-eapim
|
||||||
|
|
||||||
|
REM Gradle 명령어 설정
|
||||||
|
REM 일반 환경: gradle
|
||||||
|
REM msi-gf63 환경: C:\eactive\workspaces\shell-scripts\kjb-gradle.sh
|
||||||
|
set GRADLE_CMD=gradle
|
||||||
|
REM set GRADLE_CMD=C:\eactive\workspaces\shell-scripts\kjb-gradle.sh
|
||||||
|
|
||||||
|
REM ====================================
|
||||||
|
REM 2. 작업 디렉토리 생성
|
||||||
|
REM ====================================
|
||||||
|
if not exist "%WORKSPACE_DIR%" mkdir "%WORKSPACE_DIR%"
|
||||||
|
cd /d "%WORKSPACE_DIR%"
|
||||||
|
|
||||||
|
REM ====================================
|
||||||
|
REM 3. eapim-admin 프로젝트 클론
|
||||||
|
REM ====================================
|
||||||
|
git clone %GIT_REPO_BASE%/eapim-admin.git
|
||||||
|
cd eapim-admin
|
||||||
|
|
||||||
|
REM 프로젝트 브랜치로 체크아웃
|
||||||
|
git checkout %PROJECT_BRANCH%
|
||||||
|
|
||||||
|
REM ====================================
|
||||||
|
REM 4. eapim-online 프로젝트 클론 (코어 모듈 포함)
|
||||||
|
REM ====================================
|
||||||
|
cd /d "%WORKSPACE_DIR%"
|
||||||
|
git clone %GIT_REPO_BASE%/eapim-online.git
|
||||||
|
cd eapim-online
|
||||||
|
git checkout %PROJECT_BRANCH%
|
||||||
|
|
||||||
|
REM ====================================
|
||||||
|
REM 5. 의존 모듈 클론
|
||||||
|
REM ====================================
|
||||||
|
cd /d "%WORKSPACE_DIR%"
|
||||||
|
|
||||||
|
REM elink-portal-common 클론
|
||||||
|
git clone %GIT_REPO_BASE%/elink-portal-common.git
|
||||||
|
cd elink-portal-common
|
||||||
|
git checkout master
|
||||||
|
|
||||||
|
REM kjb-safedb 클론
|
||||||
|
cd /d "%WORKSPACE_DIR%"
|
||||||
|
git clone %GIT_REPO_BASE%/kjb-safedb.git
|
||||||
|
cd kjb-safedb
|
||||||
|
git checkout master
|
||||||
|
|
||||||
|
REM ====================================
|
||||||
|
REM 6. 최종 폴더 구조 확인
|
||||||
|
REM ====================================
|
||||||
|
REM kjb-eapim\
|
||||||
|
REM ├── eapim-admin\ # Admin 관리 콘솔 (현재 프로젝트)
|
||||||
|
REM ├── eapim-online\ # Online 게이트웨이 코어 모듈
|
||||||
|
REM │ ├── elink-online-core\
|
||||||
|
REM │ ├── elink-online-core-jpa\
|
||||||
|
REM │ ├── elink-online-transformer\
|
||||||
|
REM │ ├── elink-online-common\
|
||||||
|
REM │ ├── elink-online-emsclient\
|
||||||
|
REM │ └── elink-online-adapter\
|
||||||
|
REM ├── elink-portal-common\ # 포털 공통 컴포넌트 (JPA 엔티티)
|
||||||
|
REM └── kjb-safedb\ # SafeDB 암호화 라이브러리
|
||||||
|
|
||||||
|
REM ====================================
|
||||||
|
REM 7. eapim-admin 프로젝트로 이동 및 디펜던시 다운로드
|
||||||
|
REM ====================================
|
||||||
|
cd /d "%WORKSPACE_DIR%\eapim-admin"
|
||||||
|
|
||||||
|
REM Gradle 디펜던시 다운로드
|
||||||
|
%GRADLE_CMD% dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
### 환경별 설정 파일
|
||||||
|
|
||||||
|
프로젝트 클론 후 필요한 환경 설정을 수정하세요:
|
||||||
|
|
||||||
|
- `WebContent/WEB-INF/properties/env.D.properties` - 개발 환경
|
||||||
|
- `WebContent/WEB-INF/properties/env.T.properties` - 테스트/스테이징 환경
|
||||||
|
- `WebContent/WEB-INF/properties/env.P.properties` - 운영 환경
|
||||||
|
|
||||||
|
### 주의사항
|
||||||
|
|
||||||
|
- **gradlew 사용 금지**: 반드시 시스템에 설치된 gradle을 직접 사용하거나 환경에 맞는 스크립트를 사용하세요
|
||||||
|
- **Gradle 명령어 변수화**: 위의 `GRADLE_CMD` 변수를 설정하면 환경별로 다른 gradle 명령어 사용 가능
|
||||||
|
- **SafeDB**: 암호화 기능이 필요한 경우 `-Dkjb_safedb.mode=fake` 설정 (개발 환경) 또는 실제 SafeDB 라이브러리 설치
|
||||||
|
- **멀티 모듈 구조**: eapim-online의 여러 모듈들을 참조하므로 반드시 eapim-online도 클론해야 합니다
|
||||||
|
|
||||||
|
## 빌드 및 실행
|
||||||
|
|
||||||
|
### Gradle 명령어 설정
|
||||||
|
|
||||||
|
사용 환경에 따라 적절한 gradle 명령어를 설정하세요:
|
||||||
|
|
||||||
|
**Git Bash:**
|
||||||
|
```bash
|
||||||
|
# 일반 환경
|
||||||
|
export GRADLE_CMD="gradle"
|
||||||
|
|
||||||
|
# msi-gf63 환경
|
||||||
|
export GRADLE_CMD="/c/eactive/workspaces/shell-scripts/kjb-gradle.sh"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows CMD:**
|
||||||
|
```cmd
|
||||||
|
REM 일반 환경
|
||||||
|
set GRADLE_CMD=gradle
|
||||||
|
|
||||||
|
REM msi-gf63 환경
|
||||||
|
set GRADLE_CMD=C:\eactive\workspaces\shell-scripts\kjb-gradle.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 빌드 및 실행 명령어
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 표준 빌드
|
||||||
|
$GRADLE_CMD build
|
||||||
|
|
||||||
|
# Weblogic 배포용 빌드 (테스트 제외)
|
||||||
|
$GRADLE_CMD build -x test -Pprofile=weblogic
|
||||||
|
|
||||||
|
# WAR 파일 빌드
|
||||||
|
$GRADLE_CMD war
|
||||||
|
|
||||||
|
# 클린 빌드
|
||||||
|
$GRADLE_CMD clean build
|
||||||
|
|
||||||
|
# 테스트 실행
|
||||||
|
$GRADLE_CMD test
|
||||||
|
|
||||||
|
# 패키징 없이 클래스만 컴파일
|
||||||
|
$GRADLE_CMD classes
|
||||||
|
|
||||||
|
# QueryDSL Q-classes 및 기타 애노테이션 생성
|
||||||
|
$GRADLE_CMD compileJava
|
||||||
|
|
||||||
|
# 의존성 트리 보기
|
||||||
|
$GRADLE_CMD dependencies
|
||||||
|
|
||||||
|
# 사용 가능한 모든 태스크 목록
|
||||||
|
$GRADLE_CMD tasks --all
|
||||||
|
```
|
||||||
|
|
||||||
|
**주의**: gradlew 사용 금지 - offline gradle 단독 실행
|
||||||
|
|
||||||
|
## 프로젝트 구조
|
||||||
|
|
||||||
|
### 전체 프로젝트 구조
|
||||||
|
```
|
||||||
|
kjb-eapim/
|
||||||
|
├── eapim-admin/ # Admin 관리 콘솔 (현재 프로젝트)
|
||||||
|
├── eapim-online/ # Online 게이트웨이 코어 모듈
|
||||||
|
│ ├── elink-online-core/
|
||||||
|
│ ├── elink-online-core-jpa/
|
||||||
|
│ ├── elink-online-transformer/
|
||||||
|
│ ├── elink-online-common/
|
||||||
|
│ ├── elink-online-emsclient/
|
||||||
|
│ └── elink-online-adapter/
|
||||||
|
├── elink-portal-common/ # 포털 공통 컴포넌트 (JPA 엔티티)
|
||||||
|
├── kjb-safedb/ # SafeDB 암호화 라이브러리
|
||||||
|
└── eapim-portal/ # Portal 개발자 포털 (선택사항)
|
||||||
|
```
|
||||||
|
|
||||||
|
### eapim-admin 내부 구조
|
||||||
|
```
|
||||||
|
src/main/java/com/eactive/eai/
|
||||||
|
├── agent/command - 커맨드 패턴 구현
|
||||||
|
├── common/ - 공통 유틸리티, iBatis, JSON 직렬화
|
||||||
|
├── custom/ - 고객사별 커스터마이제이션
|
||||||
|
├── rms/ - 메인 애플리케이션 코드
|
||||||
|
│ ├── bap/ - 배치 처리 (BAP)
|
||||||
|
│ ├── bat/ - 추가 배치 기능
|
||||||
|
│ ├── common/ - RMS 공통 (필터, 시작, 서비스)
|
||||||
|
│ ├── data/ - 데이터 엔티티, 리포지토리
|
||||||
|
│ ├── env/ - 환경 설정
|
||||||
|
│ ├── kakao/ - 카카오 연동
|
||||||
|
│ ├── onl/ - 온라인 트랜잭션 관리
|
||||||
|
│ └── service/ - 비즈니스 서비스
|
||||||
|
└── ext.kjb/ - 광주은행(KJB) 확장
|
||||||
|
```
|
||||||
|
|
||||||
|
### 웹 리소스 구조
|
||||||
|
```
|
||||||
|
WebContent/
|
||||||
|
├── WEB-INF/
|
||||||
|
│ ├── applicationContext.xml - Root Spring 설정
|
||||||
|
│ ├── springapp-servlet.xml - Servlet Spring 설정
|
||||||
|
│ ├── web.xml - Tomcat용 배포 디스크립터
|
||||||
|
│ ├── weblogic-web.xml - WebLogic용 배포 디스크립터
|
||||||
|
│ └── properties/ - 환경별 프로퍼티
|
||||||
|
│ ├── env.D.properties - 개발
|
||||||
|
│ ├── env.T.properties - 테스트
|
||||||
|
│ └── env.P.properties - 운영
|
||||||
|
└── guide/ - 사용자 가이드
|
||||||
|
```
|
||||||
|
|
||||||
|
## 주요 기능
|
||||||
|
|
||||||
|
다음과 같은 관리 기능을 수행하며, 모든 관리 대상은 실시간으로 DB, 메모리에 있는 정보가 수정, 반영됩니다.
|
||||||
|
|
||||||
| 기능 | 설명 |
|
| 기능 | 설명 |
|
||||||
| -------------------- | ------------------------------------------------------------ |
|
| -------------------- | ------------------------------------------------------------ |
|
||||||
@@ -20,24 +338,93 @@ eLink 관리를 위한 웹 서비스로 전반적인 설정, 모니터링, 통
|
|||||||
| 배치 인터페이스 관리 | 배치 인터페이스 등록/관리 기능 |
|
| 배치 인터페이스 관리 | 배치 인터페이스 등록/관리 기능 |
|
||||||
| 일괄 관리 | 일괄 등록/관리 기능 |
|
| 일괄 관리 | 일괄 등록/관리 기능 |
|
||||||
|
|
||||||
|
## 외부 모듈
|
||||||
|
|
||||||
|
이 프로젝트는 다음 모듈에 의존합니다 (settings.gradle 참조):
|
||||||
|
|
||||||
### 참조 eLink 모듈
|
|
||||||
eLink 모듈을 참조하여 구성되어있으며, 추후 필요 모듈외에 제거 예정이다.
|
|
||||||
|
|
||||||
| 이름 | 버전 | 설명 |
|
| 이름 | 버전 | 설명 |
|
||||||
| ------------------------ | ------------ | ---------------------------------------------- |
|
| ------------------------ | ------------ | ---------------------------------------------- |
|
||||||
| elink-online-core | 4.5-SNAPSHOT | 코어 모듈로 인터페이스 클래스 정의 |
|
| elink-online-core | 4.5-SNAPSHOT | 코어 모듈로 인터페이스 클래스 정의 |
|
||||||
|
| elink-online-core-jpa | 4.5-SNAPSHOT | JPA 엔티티 및 리포지토리 |
|
||||||
| elink-online-transformer | 4.5-SNAPSHOT | 변환 모듈로 메시지 및 변환 관련 클래스 정의 |
|
| elink-online-transformer | 4.5-SNAPSHOT | 변환 모듈로 메시지 및 변환 관련 클래스 정의 |
|
||||||
| elink-online-adapter | 4.5-SNAPSHOT | 어댑터 모듈로 통신에 필요한 어댑터 클래스 정의 |
|
| elink-online-adapter | 4.5-SNAPSHOT | 어댑터 모듈로 통신에 필요한 어댑터 클래스 정의 |
|
||||||
| elink-online-common | 4.5-SNAPSHOT | 나머지 공통 프로그램이 정의되어있다 |
|
| elink-online-common | 4.5-SNAPSHOT | 나머지 공통 프로그램이 정의되어있다 |
|
||||||
| elink-online-emsclient | 4.5-SNAPSHOT | ems와 통신하기 위한 모듈 |
|
| elink-online-emsclient | 4.5-SNAPSHOT | ems와 통신하기 위한 모듈 |
|
||||||
|
| elink-portal-common | - | 포털 공통 컴포넌트 (JPA 엔티티) |
|
||||||
|
| kjb-safedb | - | 커스텀 암호화 라이브러리 |
|
||||||
|
| eapim-admin-kjb | - | KJB 은행 특화 커스터마이제이션 |
|
||||||
|
|
||||||
|
## 하이브리드 ORM 방식
|
||||||
|
|
||||||
|
이 애플리케이션은 **JPA와 iBATIS 모두를 사용**합니다:
|
||||||
|
- **JPA/Hibernate**: `elink-portal-common`을 통한 현대적인 데이터 액세스 (Spring Data repositories)
|
||||||
|
- **iBATIS**: 기존 코드를 위한 레거시 SQL 매핑 (점진적으로 마이그레이션 예정)
|
||||||
|
|
||||||
|
데이터 액세스 작업 시:
|
||||||
|
- 새로운 기능은 JPA와 Spring Data repositories를 사용해야 합니다
|
||||||
|
- 레거시 iBATIS 매퍼는 `src/main/resources/com/eactive/eai/**/*.xml`에 있으며 Spring XML을 통해 설정됩니다
|
||||||
|
|
||||||
|
## 코드 생성
|
||||||
|
|
||||||
|
빌드 프로세스에서 생성되는 것들:
|
||||||
|
- **QueryDSL Q-classes**: 타입 안전 쿼리 클래스
|
||||||
|
- **Lombok**: 애노테이션 프로세싱을 통한 Getters/setters/builders
|
||||||
|
- **MapStruct**: DTO와 엔티티 간의 객체 매퍼
|
||||||
|
|
||||||
|
### 이중 Q-Class 생성 (Gradle + Eclipse)
|
||||||
|
|
||||||
|
이 프로젝트는 **Gradle과 Eclipse 애노테이션 프로세서 모두를 사용**하므로, Q-classes가 **두 위치에 생성**됩니다:
|
||||||
|
|
||||||
|
1. **`build/generated/java/`** - `gradle compileJava` 또는 `gradle build` 실행 시 Gradle이 생성
|
||||||
|
2. **`WebContent/generated/`** - Eclipse IDE에서 빌드 시 Eclipse APT가 생성
|
||||||
|
|
||||||
|
**이는 예상된 동작이며 의도적입니다.** 두 디렉토리 모두 `.gitignore`에 포함되어 있으며 커밋해서는 안 됩니다.
|
||||||
|
|
||||||
|
## AI 코딩 어시스턴트 지침 파일
|
||||||
|
|
||||||
|
이 프로젝트는 여러 AI 코딩 어시스턴트를 지원합니다. 각 도구는 다음 파일을 참조합니다:
|
||||||
|
|
||||||
|
### 지침 파일 위치
|
||||||
|
|
||||||
|
| AI 도구 | 지침 파일 경로 | 용도 |
|
||||||
|
|---------|---------------|------|
|
||||||
|
| **Claude Code** | `CLAUDE.md` | 마스터 지침 파일 (한글) |
|
||||||
|
| **GitHub Copilot** | `.github/copilot-instructions.md` | Copilot용 지침 |
|
||||||
|
| **Cursor** | `.cursorrules` | Cursor용 간결한 규칙 |
|
||||||
|
|
||||||
|
### 지침 파일 관리 방법
|
||||||
|
|
||||||
|
1. **마스터 파일**: `CLAUDE.md`
|
||||||
|
- 가장 상세한 프로젝트 지침을 포함
|
||||||
|
- 한글로 작성되어 한국 개발팀이 이해하기 쉬움
|
||||||
|
- 수정 시 이 파일을 먼저 업데이트
|
||||||
|
|
||||||
|
2. **동기화**:
|
||||||
|
```bash
|
||||||
|
# CLAUDE.md 수정 후 다른 파일들 동기화
|
||||||
|
cp CLAUDE.md .github/copilot-instructions.md
|
||||||
|
# .cursorrules는 간결한 버전이므로 필요시 수동 업데이트
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **새로운 AI 도구 지원 추가**:
|
||||||
|
- Windsurf: `.windsurfrules` 파일 생성
|
||||||
|
- 기타 도구: 해당 도구의 규칙 파일명 확인 후 생성
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## TOMCAT 기동 옵션 참조
|
## 환경 설정
|
||||||
### 은행 개발 서버용
|
|
||||||
|
### 시스템 모드
|
||||||
|
|
||||||
|
- **D (DEV)**: 개발 환경
|
||||||
|
- **T (TEST)**: 테스트/스테이징 환경
|
||||||
|
- **P (PROD)**: 운영 환경
|
||||||
|
|
||||||
|
시스템 모드는 `-Deai.systemmode` JVM 옵션으로 설정하며, 해당 환경의 프로퍼티 파일(`env.D.properties` 등)을 로드합니다.
|
||||||
|
|
||||||
|
### TOMCAT 기동 옵션 참조
|
||||||
|
|
||||||
|
#### 은행 개발 서버용
|
||||||
```
|
```
|
||||||
-Deai.datasource.type=DEV
|
-Deai.datasource.type=DEV
|
||||||
-Dinst.Name=emsSvr11
|
-Dinst.Name=emsSvr11
|
||||||
@@ -47,8 +434,7 @@ eLink 모듈을 참조하여 구성되어있으며, 추후 필요 모듈외에
|
|||||||
-DLOGBACK_LOG_LEVEL=info
|
-DLOGBACK_LOG_LEVEL=info
|
||||||
```
|
```
|
||||||
|
|
||||||
### 로컬 개발용
|
#### 로컬 개발용
|
||||||
|
|
||||||
```
|
```
|
||||||
-Deai.datasource.type=DEV
|
-Deai.datasource.type=DEV
|
||||||
-Dinst.Name=emsSvr99
|
-Dinst.Name=emsSvr99
|
||||||
@@ -59,35 +445,132 @@ eLink 모듈을 참조하여 구성되어있으며, 추후 필요 모듈외에
|
|||||||
-DLOGBACK_LOG_LEVEL=DEBUG
|
-DLOGBACK_LOG_LEVEL=DEBUG
|
||||||
-Dlogback.configurationFile=classpath:logback-dev.xml
|
-Dlogback.configurationFile=classpath:logback-dev.xml
|
||||||
-Dhibernate.dialect=org.hibernate.dialect.Oracle12cDialect
|
-Dhibernate.dialect=org.hibernate.dialect.Oracle12cDialect
|
||||||
-Dkjb_safedb.mode=none
|
-Dkjb_safedb.mode=fake
|
||||||
```
|
```
|
||||||
|
|
||||||
## 광주은행 커스텀 관련
|
### 데이터베이스 지원
|
||||||
|
|
||||||
|
- **Oracle**: 운영 데이터베이스 (주)
|
||||||
|
- **PostgreSQL/MariaDB**: 대체 운영 DB
|
||||||
|
- **H2**: 테스트용 인메모리 데이터베이스
|
||||||
|
|
||||||
|
데이터베이스 벤더는 프로퍼티 파일의 `db.vendor`와 `hibernate.dialect`를 통해 설정됩니다.
|
||||||
|
|
||||||
|
### SafeDB 암호화 라이브러리
|
||||||
|
|
||||||
|
`kjb-safedb` 모듈은 세 가지 동작 모드를 제공합니다:
|
||||||
|
- **REAL**: 실제 SafeDB 네이티브 라이브러리 사용
|
||||||
|
- **FAKE**: SHA-256/AES-256을 사용하는 개발 모드 (SafeDB 설치 불필요)
|
||||||
|
- **NONE**: 암호화 우회 (테스트 전용)
|
||||||
|
|
||||||
|
개발 시 SafeDB가 로컬에 설치되지 않은 경우 `-Dkjb_safedb.mode=fake`를 설정합니다.
|
||||||
|
|
||||||
|
## 배포
|
||||||
|
|
||||||
|
### 지원 서버
|
||||||
|
- **Tomcat** (기본, 개발)
|
||||||
|
- **WebLogic 14.1.2** (운영, `-Pprofile=weblogic` 필요)
|
||||||
|
- **JEUS** (지원)
|
||||||
|
- **JBoss/WildFly** (descriptors와 함께 지원)
|
||||||
|
|
||||||
|
### WebLogic 전용 빌드
|
||||||
|
|
||||||
|
WebLogic용 빌드 시, DefaultServlet 문제를 해결하기 위해 `web.xml`을 `weblogic-web.xml`로 교체하는 `weblogic` 프로필을 사용합니다:
|
||||||
|
|
||||||
### Gradle 빌드 옵션
|
|
||||||
```bash
|
```bash
|
||||||
# Weblogic 배포용 (테스트 제외)
|
|
||||||
gradle build -x test -Pprofile=weblogic
|
gradle build -x test -Pprofile=weblogic
|
||||||
```
|
```
|
||||||
|
|
||||||
- -Pprofile=weblogic 사용시 weblogic-web.xml 을 web.xml 로 사용 (DefaultServlet 이슈)
|
### WAR 배포
|
||||||
|
|
||||||
|
WAR 파일은 context path `/monitoring`으로 `eapim-admin.war`로 빌드됩니다.
|
||||||
|
|
||||||
|
## IDE 설정
|
||||||
|
|
||||||
|
### Eclipse
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gradle eclipse
|
||||||
|
```
|
||||||
|
|
||||||
|
다음을 생성합니다:
|
||||||
|
- `.project` 및 `.classpath` 파일
|
||||||
|
- Eclipse WTP 설정 (context path: `/monitoring`)
|
||||||
|
- UTF-8 인코딩 설정
|
||||||
|
- QueryDSL/Lombok을 위한 애노테이션 프로세서 설정
|
||||||
|
|
||||||
|
### IntelliJ IDEA
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gradle idea
|
||||||
|
```
|
||||||
|
|
||||||
|
또는 IntelliJ에서 직접 "Import Gradle Project"를 사용합니다.
|
||||||
|
|
||||||
|
## KJB (광주은행) 전용 설정
|
||||||
|
|
||||||
|
### 프로퍼티 관리
|
||||||
|
KJB 전용 프로퍼티는 데이터베이스 테이블 `TSEAIRM24`에 그룹명 `'Monitoring'`으로 저장됩니다.
|
||||||
|
|
||||||
|
|
||||||
## 광주은행 참고 사항
|
### 주요 프로퍼티 설정
|
||||||
### PORTAL Parameter
|
|
||||||
- deploy.prod_use_proxy = N (개발/운영 망 간 연동 없음)
|
|
||||||
- kjb.ums.eai_batch.url : EAI 배치 서버 URL (이메일 발송 용도)
|
|
||||||
- 개발 : http://172.31.32.111:10230/BATAppWeb/EaiBatCall
|
|
||||||
- QA : http://172.31.33.111:10430/BATAppWeb/EaiBatCall
|
|
||||||
- 운영 : http://172.21.1.40:10860/BATAppWeb/EaiBatCall
|
|
||||||
- 입력하지 않을 경우 EAI 배치 호출을 하지 않고 내부적으로 통신하지 않고 정상 처리(log 내 warning 로그)
|
|
||||||
- kjb.ums.eai_batch.send_dir : EAI 배치 서버 파일 송신 디렉토리
|
|
||||||
- Default : /Data/eapim/portal/sendmail
|
|
||||||
|
|
||||||
|
**이메일 알림 (EAI Batch를 통해)**
|
||||||
|
- `kjb.eai_batch.url` - 이메일 발송을 위한 EAI 배치 서버 URL
|
||||||
|
- 개발: http://172.31.32.111:10230/BATAppWeb/EaiBatCall
|
||||||
|
- QA: http://172.31.33.111:10430/BATAppWeb/EaiBatCall
|
||||||
|
- 운영: http://172.21.1.40:10860/BATAppWeb/EaiBatCall
|
||||||
|
- 입력하지 않을 경우 EAI 배치 호출을 하지 않고 내부적으로 통신하지 않으며 warning 로그만 남김
|
||||||
|
- `kjb.ums.eai_batch.send_dir` - 이메일 파일 발송 디렉토리 (기본값: `/Data/eapim/portal/sendmail/snd`)
|
||||||
|
- `kjb.ums.eai_batch.backup_dir` - 이메일 백업 디렉토리 (기본값: `/Data/eapim/portal/sendmail/bak`)
|
||||||
|
- `kjb.ums.eai_batch.interface_id` - 고객 이메일용 인터페이스 ID (예: `UAGFF00001UIE`)
|
||||||
|
|
||||||
- -Pprofile=weblogic 사용시 weblogic-web.xml 을 web.xml 로 사용 (DefaultServlet 이슈)
|
**UMS (SMS/LMS/카카오톡) 연동**
|
||||||
|
- `kjb.ums.host_url` - UMS API 엔드포인트
|
||||||
|
- `kjb.ums.api_key` - UMS API 인증 키
|
||||||
|
- `kjb.ums.connection_timeout` - 연결 타임아웃 (초 단위)
|
||||||
|
- `kjb.ums.response_timeout` - 응답 타임아웃 (초 단위)
|
||||||
|
|
||||||
### 추가 파라미터
|
### 보안
|
||||||
|
- 커스텀 패스워드 인코더: SafeDB 연동을 위한 `KjbSafedbPasswordEncoder`
|
||||||
|
|
||||||
|
## 테스트
|
||||||
|
|
||||||
|
테스트에 사용되는 것들:
|
||||||
|
- **JUnit 5 (Jupiter)**: 테스트 프레임워크
|
||||||
|
- **Spring Boot Test 2.6.15**: 통합 테스트 유틸리티
|
||||||
|
- **H2 Database**: 테스트용 인메모리 데이터베이스
|
||||||
|
- **Mockito**: 모킹 프레임워크 (Spring Boot Test를 통해)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 모든 테스트 실행
|
||||||
|
gradle test
|
||||||
|
|
||||||
|
# 특정 테스트 클래스 실행
|
||||||
|
gradle test --tests "com.example.ClassName"
|
||||||
|
|
||||||
|
# 특정 테스트 패키지 실행 (JUnit 플랫폼 사용)
|
||||||
|
gradle test --tests "com.eactive.eai.rms.*"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 관련 프로젝트
|
||||||
|
|
||||||
|
프로젝트 구조 (kjb-eapim 디렉토리 기준):
|
||||||
|
- `eapim-admin/` - Admin 관리 콘솔 (현재 프로젝트)
|
||||||
|
- `eapim-online/` - Online 게이트웨이 (코어 모듈 포함)
|
||||||
|
- `eapim-portal/` - Portal 개발자 포털
|
||||||
|
- `elink-portal-common/` - 공통 유틸리티 라이브러리
|
||||||
|
- `kjb-safedb/` - SafeDB 암호화 라이브러리
|
||||||
|
- `kjb-eapim-sql/` - SQL 스크립트 (선택사항)
|
||||||
|
|
||||||
|
## 문서
|
||||||
|
|
||||||
|
- **프로젝트 상세 지침**: `CLAUDE.md` (한글)
|
||||||
|
- **사용자 가이드**: `WebContent/guide/` (한글)
|
||||||
|
|
||||||
|
## 참고: KJB 데이터베이스 파라미터 설정
|
||||||
|
|
||||||
|
### 추가 파라미터 SQL
|
||||||
```sql
|
```sql
|
||||||
-- 로컬 개발용 (외부)
|
-- 로컬 개발용 (외부)
|
||||||
-- EAI, UMS 주소 미기입시 내부적으론 호출 시도 하지 않고 warning 로그만 남기며 정상 처리
|
-- EAI, UMS 주소 미기입시 내부적으론 호출 시도 하지 않고 warning 로그만 남기며 정상 처리
|
||||||
@@ -168,4 +651,7 @@ insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Mon
|
|||||||
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.obp.query_partnercode_uri', '/api/customer/findCustomerByBusinessManRegistrationNo/%s');
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.obp.query_partnercode_uri', '/api/customer/findCustomerByBusinessManRegistrationNo/%s');
|
||||||
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.obp.create_partnercode_uri', '/not-yet-implement/%s');
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.obp.create_partnercode_uri', '/not-yet-implement/%s');
|
||||||
commit;
|
commit;
|
||||||
```
|
```
|
||||||
|
## 라이선스
|
||||||
|
|
||||||
|
© 광주은행 (Kwangju Bank)
|
||||||
|
|||||||
@@ -125,5 +125,11 @@ public class PortalUserManController extends BaseAnnotationController {
|
|||||||
String result = portalUserManService.checkDuplicateId(loginId) ? "success" : "";
|
String result = portalUserManService.checkDuplicateId(loginId) ? "success" : "";
|
||||||
return ResponseEntity.ok().body(Collections.singletonMap("result", result));
|
return ResponseEntity.ok().body(Collections.singletonMap("result", result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping(value = "/onl/apim/portaluser/portalUserMan.json", params = "cmd=PASSWORD_RESET")
|
||||||
|
public ResponseEntity<Void> passwordReset(String id) {
|
||||||
|
portalUserManService.passwordReset(id);
|
||||||
|
return ResponseEntity.ok().build();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,4 +173,21 @@ public class PortalUserManService extends BaseService {
|
|||||||
return !portalUserService.existsByLoginId(loginId);
|
return !portalUserService.existsByLoginId(loginId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void passwordReset(String id) {
|
||||||
|
PortalUser portalUser = portalUserService.getById(id);
|
||||||
|
|
||||||
|
// 패스워드를 초기 패스워드("!" + loginId)로 초기화
|
||||||
|
portalUser.setPasswordHash(kjbSafedbPasswordEncoder.encode("!" + portalUser.getLoginId()));
|
||||||
|
|
||||||
|
// 로그인 실패 횟수 초기화
|
||||||
|
portalUser.setLoginFailureCount(0);
|
||||||
|
|
||||||
|
// 계정 잠금 해제
|
||||||
|
portalUser.setAccountLockYn("N");
|
||||||
|
|
||||||
|
portalUserService.save(portalUser);
|
||||||
|
|
||||||
|
log.info("Password reset for user: {}", portalUser.getLoginId());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<configuration scan="true" scanPeriod="10 seconds">
|
<configuration scan="true" scanPeriod="10 seconds">
|
||||||
|
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
|
||||||
|
|
||||||
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] \\(%F:%L\\) %-20M -%msg%n" />
|
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] \\(%F:%L\\) %-20M -%msg%n" />
|
||||||
<property name="PREFIX" value="${inst.Type:-ems}" />
|
<property name="PREFIX" value="${inst.Type:-ems}" />
|
||||||
<property name="LOG_HOME" value="/Log/App/eapim/${inst.Name:-devSvr00}" />
|
<property name="LOG_HOME" value="/Log/App/eapim/${inst.Name:-devSvr00}" />
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<configuration scan="true" scanPeriod="10 seconds">
|
<configuration scan="true" scanPeriod="10 seconds">
|
||||||
|
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
|
||||||
|
|
||||||
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] \\(%F:%L\\) %-20M -%msg%n" />
|
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] \\(%F:%L\\) %-20M -%msg%n" />
|
||||||
<property name="PREFIX" value="${inst.Type:-ems}" />
|
<property name="PREFIX" value="${inst.Type:-ems}" />
|
||||||
<property name="LOG_HOME" value="/Log/App/eapim/${inst.Name:-devSvr00}" />
|
<property name="LOG_HOME" value="/Log/App/eapim/${inst.Name:-devSvr00}" />
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<configuration scan="true" scanPeriod="10 seconds">
|
<configuration scan="true" scanPeriod="10 seconds">
|
||||||
|
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
|
||||||
|
|
||||||
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] \\(%F:%L\\) %-20M -%msg%n" />
|
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] \\(%F:%L\\) %-20M -%msg%n" />
|
||||||
<property name="PREFIX" value="${inst.Type:-ems}" />
|
<property name="PREFIX" value="${inst.Type:-ems}" />
|
||||||
<property name="LOG_HOME" value="/Log/App/eapim/${inst.Name:-emsSvr00}" />
|
<property name="LOG_HOME" value="/Log/App/eapim/${inst.Name:-emsSvr00}" />
|
||||||
|
|||||||
@@ -356,101 +356,7 @@ batMonitor.compCnt = Complete cnt
|
|||||||
batMonitor.error = Error
|
batMonitor.error = Error
|
||||||
batMonitor.errorMonitoring = Error Monitoring
|
batMonitor.errorMonitoring = Error Monitoring
|
||||||
batMonitor.errorSection = Error Section
|
batMonitor.errorSection = Error Section
|
||||||
batMonitor.errorTime = Error Occur Time
|
batMonitor.errorTime =7
|
||||||
batMonitor.fileCnt = File cnt
|
|
||||||
batMonitor.fileSize = File size
|
|
||||||
batMonitor.interMonitoring = Interface Monitoring
|
|
||||||
batMonitor.mgsId = Message ID
|
|
||||||
batMonitor.msgMonitorDetail = Message Monitoring Detail
|
|
||||||
batMonitor.msgMonitoring = Message Monitoring
|
|
||||||
batMonitor.msgReqTime = Message Req Time
|
|
||||||
batMonitor.occurCnt = Occur cnt
|
|
||||||
batMonitor.paramFile = Parameter(File Name)
|
|
||||||
batMonitor.recvingEnd = Time of Receiving Complete
|
|
||||||
batMonitor.recvingStart = Time of Receiving
|
|
||||||
batMonitor.sendFile = Sending File Name
|
|
||||||
batMonitor.sending = Sending
|
|
||||||
batMonitor.sendingEnd = Time of Sending Complete
|
|
||||||
batMonitor.sendingStart = Time of Sending Start
|
|
||||||
batMonitor.startType = Server Boot
|
|
||||||
batMonitor.status = Transmit status
|
|
||||||
batMonitor.succCnt = Success cnt
|
|
||||||
batMonitor.success = Success
|
|
||||||
batMonitor.suspended = Suspended
|
|
||||||
batMonitor.targetFile = Target File Name
|
|
||||||
|
|
||||||
batSchedule.interval = Repeat Interval
|
|
||||||
batSchedule.list = Schedule List
|
|
||||||
batSchedule.name = Schedule Name
|
|
||||||
batSchedule.title = Batch Scheduler
|
|
||||||
batSchedule.type = Schedule Type
|
|
||||||
|
|
||||||
batch.grid.appCd = App.Code
|
|
||||||
batch.grid.biz = Biz.Code
|
|
||||||
batch.server = Batch Server
|
|
||||||
|
|
||||||
bizKeyTranMan.apCode = Application code
|
|
||||||
bizKeyTranMan.eaiBzwkDstcd = EAI Business Code
|
|
||||||
bizKeyTranMan.title = EAI Business Code Transform
|
|
||||||
bizKeyTranMan.title2 = EAI Business Code Transform Detail
|
|
||||||
|
|
||||||
board.answer = Answer y/n
|
|
||||||
board.author = Author
|
|
||||||
board.ctnt = Contents
|
|
||||||
board.ctnt.reply = Org. message
|
|
||||||
board.ctnt.validate = Enter Contents.
|
|
||||||
board.filename = Attach file
|
|
||||||
board.headtitle = Board
|
|
||||||
board.headtitle.reply = Reply
|
|
||||||
board.headtitle.view = View
|
|
||||||
board.headtitle.write = Write
|
|
||||||
board.location = File location
|
|
||||||
board.lvl = Level No
|
|
||||||
board.lvlNo = Level Group
|
|
||||||
board.rDate = Read Time
|
|
||||||
board.readCnt = Read Count
|
|
||||||
board.regDate = Reg. Date
|
|
||||||
board.seqNo = NO
|
|
||||||
board.sortSeq = Sort Seq
|
|
||||||
board.title = Title
|
|
||||||
board.title.validate = Enter Title.
|
|
||||||
board.tooltip = Q&A Board for Developers
|
|
||||||
|
|
||||||
boardDetail.headtitle = Board
|
|
||||||
boardDetail.tooltip = Q&A Board for Developers
|
|
||||||
|
|
||||||
button.add = add
|
|
||||||
button.allReg = All Register
|
|
||||||
button.allRel = All Release
|
|
||||||
button.assign = Assign
|
|
||||||
button.bizChange = Biz Change
|
|
||||||
button.cancel = Cancel
|
|
||||||
button.change = Change
|
|
||||||
button.clone = STAGE Copy
|
|
||||||
button.clone2 = Clone
|
|
||||||
button.close = Close
|
|
||||||
button.convert = Convert
|
|
||||||
button.copyProd = Copy PROD
|
|
||||||
button.copyStage = Copy STAGE
|
|
||||||
button.delete = Delete
|
|
||||||
button.deploy = Deploy
|
|
||||||
button.detail = Detail
|
|
||||||
button.download = Download
|
|
||||||
button.encode = Encode
|
|
||||||
button.excel = Excel
|
|
||||||
button.execute = Exec
|
|
||||||
button.initialize = Init Password
|
|
||||||
button.input = Input
|
|
||||||
button.modify = Modify
|
|
||||||
button.new = New
|
|
||||||
button.operate = Operate
|
|
||||||
button.previous = Prev
|
|
||||||
button.refresh = Renew
|
|
||||||
button.register = Register
|
|
||||||
button.release = Release
|
|
||||||
button.reset = Reset
|
|
||||||
button.roleChange = Role Change
|
|
||||||
button.search = Search
|
|
||||||
button.serviceChange = Service Change
|
button.serviceChange = Service Change
|
||||||
button.upload = Upload
|
button.upload = Upload
|
||||||
button.valdt = Validate
|
button.valdt = Validate
|
||||||
@@ -462,6 +368,7 @@ button.mapping = Mapping
|
|||||||
button.deployFileDownload = Depoly File Download
|
button.deployFileDownload = Depoly File Download
|
||||||
button.re_operate = retry operate
|
button.re_operate = retry operate
|
||||||
button.temp_operate = temp operate
|
button.temp_operate = temp operate
|
||||||
|
button.save = Save
|
||||||
|
|
||||||
c2r.bizCode = Biz Code(SYNC/ASYNC)
|
c2r.bizCode = Biz Code(SYNC/ASYNC)
|
||||||
c2r.failOver = Failover ?
|
c2r.failOver = Failover ?
|
||||||
@@ -2600,4 +2507,6 @@ auditLogMan.userId = User ID
|
|||||||
|
|
||||||
|
|
||||||
safeDB.decryptError = SafeDB Decrypt Error
|
safeDB.decryptError = SafeDB Decrypt Error
|
||||||
safeDB.encryptError = SafeDB Encrypt Error
|
safeDB.encryptError = SafeDB Encrypt Error
|
||||||
|
|
||||||
|
password_reset = Password Reset
|
||||||
@@ -2616,3 +2616,4 @@ messageTemplate.enableMessenger=Enable Messenger
|
|||||||
messageTemplate.messengerTemplate=Messenger Template
|
messageTemplate.messengerTemplate=Messenger Template
|
||||||
messageTemplate.subjectTemplate=Subject Template
|
messageTemplate.subjectTemplate=Subject Template
|
||||||
messageTemplate.tooltip=Message Template Management
|
messageTemplate.tooltip=Message Template Management
|
||||||
|
password_reset=Password Reset
|
||||||
|
|||||||
@@ -502,6 +502,7 @@ button.upload = \uC5C5\uB85C\uB4DC
|
|||||||
button.valdt = \uAC80\uC99D
|
button.valdt = \uAC80\uC99D
|
||||||
button.chage_history = \uBCC0\uACBD\uC774\uB825 \uC870\uD68C
|
button.chage_history = \uBCC0\uACBD\uC774\uB825 \uC870\uD68C
|
||||||
button.verifyConn = \uC5F0\uACB0\uAC80\uC99D
|
button.verifyConn = \uC5F0\uACB0\uAC80\uC99D
|
||||||
|
button.save = \uC800\uC7A5
|
||||||
|
|
||||||
c2r.bizCode = \uC5C5\uBB34\uCF54\uB4DC(SYNC/ASYNC)
|
c2r.bizCode = \uC5C5\uBB34\uCF54\uB4DC(SYNC/ASYNC)
|
||||||
c2r.failOver = FailOver\uC5EC\uBD80
|
c2r.failOver = FailOver\uC5EC\uBD80
|
||||||
@@ -2768,7 +2769,6 @@ messageTemplate.emailTemplate=\uC774\uBA54\uC77C \uBA54\uC2DC\uC9C0 \uD15C\uD50C
|
|||||||
messageTemplate.enableMessenger=\uBA54\uC2E0\uC800 \uD65C\uC131
|
messageTemplate.enableMessenger=\uBA54\uC2E0\uC800 \uD65C\uC131
|
||||||
messageTemplate.messengerTemplate=\uBA54\uC2E0\uC800 \uBA54\uC2DC\uC9C0 \uD15C\uD50C\uB9BF
|
messageTemplate.messengerTemplate=\uBA54\uC2E0\uC800 \uBA54\uC2DC\uC9C0 \uD15C\uD50C\uB9BF
|
||||||
messageTemplate.tooltip=\uC54C\uB9BC\uAD00\uB9AC\uB97C \uC704\uD55C \uBA54\uC138\uC9C0 \uD15C\uD50C\uB9BF\uC744 \uC870\uD68C\uD558\uB294 \uD654\uBA74\uC785\uB2C8\uB2E4.
|
messageTemplate.tooltip=\uC54C\uB9BC\uAD00\uB9AC\uB97C \uC704\uD55C \uBA54\uC138\uC9C0 \uD15C\uD50C\uB9BF\uC744 \uC870\uD68C\uD558\uB294 \uD654\uBA74\uC785\uB2C8\uB2E4.
|
||||||
button.save=\uC800\uC7A5
|
|
||||||
button.check=\uC120\uD0DD\uC644\uB8CC
|
button.check=\uC120\uD0DD\uC644\uB8CC
|
||||||
|
|
||||||
portalApprovalLine.title=\uC2B9\uC778\uB77C\uC778 \uAD00\uB9AC
|
portalApprovalLine.title=\uC2B9\uC778\uB77C\uC778 \uAD00\uB9AC
|
||||||
@@ -2779,4 +2779,5 @@ portalApprovalLine.title2=\uC2B9\uC778\uB77C\uC778
|
|||||||
portalApprovalLine.title3=\uC2B9\uC778\uC790\uC815\uBCF4
|
portalApprovalLine.title3=\uC2B9\uC778\uC790\uC815\uBCF4
|
||||||
|
|
||||||
safeDB.decryptError = SafeDB \uBCF5\uD638\uD654 \uC624\uB958
|
safeDB.decryptError = SafeDB \uBCF5\uD638\uD654 \uC624\uB958
|
||||||
safeDB.encryptError = SafeDB \uC554\uD638\uD654 \uC624\uB958
|
safeDB.encryptError = SafeDB \uC554\uD638\uD654 \uC624\uB958
|
||||||
|
password_reset=\uBE44\uBC00\uBC88\uD638 \uCD08\uAE30\uD654
|
||||||
Reference in New Issue
Block a user