diff --git a/BOOTRUN_SETUP_GUIDE.md b/BOOTRUN_SETUP_GUIDE.md
new file mode 100644
index 0000000..a61affb
--- /dev/null
+++ b/BOOTRUN_SETUP_GUIDE.md
@@ -0,0 +1,173 @@
+# eapim-portal 로컬 개발 환경 실행 가이드
+
+> Eclipse Terminal에서 `gradlew bootRun`으로 기동하는 방법
+
+---
+
+## 환경 구성 개요
+
+| 항목 | 내용 |
+|------|------|
+| DB | 로컬 Docker Oracle 19c |
+| 포트 | 8080 |
+| 프로파일 | dev |
+| 실행 방법 | Eclipse Terminal → `gradlew.bat bootRun` |
+
+---
+
+## 1. 사전 준비: 로그 디렉토리 생성
+
+최초 1회만 실행 (없으면 기동 실패)
+
+```cmd
+mkdir C:\Log\eapim\portal
+mkdir C:\Log\App\eapim
+```
+
+---
+
+## 2. Docker Oracle 기동
+
+```cmd
+cd D:\eActive\workspaces\elink-djbank\docker\ekjb
+docker-compose up -d
+```
+
+Oracle 완전 기동 확인 (처음 기동 시 3~5분 소요):
+
+```cmd
+docker logs -f oracle
+```
+
+`DATABASE IS READY TO USE!` 메시지 확인 후 다음 단계 진행.
+
+---
+
+## 3. Eclipse Terminal에서 bootRun 실행
+
+### Eclipse Terminal 열기
+
+`Window` → `Show View` → `Terminal`
+→ 우측 상단 **+** 클릭 → **Local Terminal** 선택
+
+### 실행 명령어
+
+```cmd
+cd D:\eActive\workspaces\elink-djbank\eapim-portal
+gradlew.bat bootRun
+```
+
+### 기동 성공 확인
+
+```
+##### PortalApplication Ready #####
+```
+
+브라우저에서 `http://localhost:8080` 접속 확인.
+
+---
+
+## 4. 수정된 파일 목록
+
+### 4-1. `src/main/resources/application-dev.yml`
+
+DB 호스트를 원격 서버에서 로컬 Docker로 변경:
+
+```yaml
+ems:
+ datasource:
+ jdbc-url: jdbc:oracle:thin:@//localhost:1599/DAPM # 변경
+ username: EMSAPP
+ password: elink1234
+
+gateway:
+ datasource:
+ jdbc-url: jdbc:oracle:thin:@//localhost:1599/DAPM # 변경
+ username: AGWAPP
+ password: elink1234
+```
+
+### 4-2. `build.gradle`
+
+`bootRun` 태스크에 `sourceResources` 추가:
+
+```groovy
+bootRun {
+ sourceResources sourceSets.main // processResources 필터 우회 (dev yml 직접 참조)
+ args = ["--spring.profiles.active=dev"]
+}
+```
+
+> **이유**: `processResources`가 `application-dev.yml`을 빌드 출력에서 제외하도록 설정되어 있어,
+> `sourceResources sourceSets.main`을 추가해야 `bootRun` 실행 시 소스 디렉토리를 직접 참조함.
+
+### 4-3. `src/main/resources/logback-spring.xml`
+
+`dev` 프로파일에 CONSOLE appender 추가 (콘솔 로그 출력):
+
+```xml
+
+
+
+
+
+
+```
+
+### 4-4. `.classpath`
+
+MapStruct 등 Gradle annotation processor 생성 소스를 Eclipse 소스 폴더로 추가:
+
+```xml
+
+
+
+
+
+
+```
+
+> **이유**: Eclipse는 Gradle annotation processing을 자동 실행하지 않으므로,
+> `gradlew.bat compileJava` 실행 후 생성된 소스 경로를 Eclipse 빌드 경로에 수동 추가 필요.
+
+---
+
+## 5. Annotation Processor 소스 재생성
+
+소스 구조 변경(매퍼 추가 등) 시 재실행 필요:
+
+```cmd
+cd D:\eActive\workspaces\elink-djbank\eapim-portal
+gradlew.bat compileJava
+```
+
+이후 Eclipse에서 `Project` → `Clean` 실행.
+
+---
+
+## 6. Eclipse에서 직접 기동이 안 되는 이유
+
+Eclipse는 참조 프로젝트(`elink-online-core-jpa`)의 test scope 의존성을 구분하지 않고
+런타임 클래스패스에 모두 포함시킵니다.
+
+이로 인해 Spring Boot 버전 충돌 발생:
+
+| 출처 | jar | 충돌 대상 |
+|------|-----|-----------|
+| `elink-online-core-jpa` (test) | `spring-boot-autoconfigure:2.6.15` | eapim-portal `2.7.18` |
+| `elink-online-core-jpa` (test) | `spring-core:5.3.27` | eapim-portal `5.3.31` |
+
+→ `gradlew bootRun`은 Gradle의 dependency management(BOM)로 버전을 통일하므로 이 문제가 없음.
+
+---
+
+## 7. Docker Oracle 계정 정보
+
+| 항목 | 값 |
+|------|----|
+| Host | localhost |
+| Port | 1599 |
+| SID | DAPM |
+| EMS 계정 | EMSAPP / elink1234 |
+| GW 계정 | AGWAPP / elink1234 |
diff --git a/build.gradle b/build.gradle
index e089aa4..918045e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -14,6 +14,14 @@ targetCompatibility = "1.8"
def nexusUrl = "https://nexus.eactive.synology.me:8090"
+allprojects {
+ repositories {
+ maven {
+ url "${nexusUrl}/repository/maven-public/"
+ allowInsecureProtocol = true
+ }
+ }
+}
dependencies {
annotationProcessor "org.projectlombok:lombok:1.18.28"
@@ -27,7 +35,7 @@ dependencies {
implementation project(':elink-online-core-jpa')
implementation project(':elink-portal-common')
- implementation project(':kjb-safedb')
+// implementation project(':kjb-safedb')
implementation('org.springframework.boot:spring-boot-starter')
implementation 'org.springframework.boot:spring-boot-starter-jta-atomikos'
@@ -115,6 +123,7 @@ bootRun {
// 디버깅 사용시에는 아래 내용 주석 해제 하세요
// jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'
+ sourceResources sourceSets.main // processResources 필터 우회 (dev yml 직접 참조)
args = ["--spring.profiles.active=dev"]
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 32b15f0..20db9ad 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=http\://192.168.240.178\:18082/repository/gradle-dist/gradle-8.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/settings.gradle b/settings.gradle
index 43bae24..6406d23 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -7,5 +7,5 @@ project (':elink-online-core-jpa').projectDir = new File(settingsDir, "../eapim-
project (':elink-portal-common').projectDir = new File(settingsDir, "../elink-portal-common")
-include 'kjb-safedb'
-project (':kjb-safedb').projectDir = new File(settingsDir, "../kjb-safedb")
\ No newline at end of file
+//include 'kjb-safedb'
+//project (':kjb-safedb').projectDir = new File(settingsDir, "../kjb-safedb")
\ No newline at end of file
diff --git a/src/main/java/com/eactive/apim/portal/custom/config/KjbPasswordEncoder.java b/src/main/java/com/eactive/apim/portal/custom/config/KjbPasswordEncoder.java
index 07ec846..c404f92 100644
--- a/src/main/java/com/eactive/apim/portal/custom/config/KjbPasswordEncoder.java
+++ b/src/main/java/com/eactive/apim/portal/custom/config/KjbPasswordEncoder.java
@@ -1,6 +1,6 @@
package com.eactive.apim.portal.custom.config;
-import com.eactive.ext.kjb.safedb.KjbSafedbWrapper;
+//import com.eactive.ext.kjb.safedb.KjbSafedbWrapper;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@@ -11,14 +11,16 @@ public class KjbPasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence rawPassword) {
String bcryptHash = bcryptEncoder.encode(rawPassword);
- KjbSafedbWrapper safedb = KjbSafedbWrapper.getInstance();
- return safedb.encryptNotRnnoString(bcryptHash);
+// KjbSafedbWrapper safedb = KjbSafedbWrapper.getInstance();
+// return safedb.encryptNotRnnoString(bcryptHash);
+ return bcryptHash;
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
- KjbSafedbWrapper safedb = KjbSafedbWrapper.getInstance();
- String bcryptHash = safedb.decryptNotRnno(encodedPassword);
- return bcryptEncoder.matches(rawPassword, bcryptHash);
+ return bcryptEncoder.matches(rawPassword, encodedPassword);
+// KjbSafedbWrapper safedb = KjbSafedbWrapper.getInstance();
+// String bcryptHash = safedb.decryptNotRnno(encodedPassword);
+// return bcryptEncoder.matches(rawPassword, bcryptHash);
}
}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fb5f832..376e3fb 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -21,20 +21,22 @@ spring:
ems:
datasource:
- jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/DAPM
+ jdbc-url: jdbc:oracle:thin:@//localhost:1599/DAPM
+# jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/DAPM
# jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/PAPM
driver-class-name: oracle.jdbc.OracleDriver
username: EMSAPP
- password: EMSAPP123!
+ password: elink1234
gateway:
datasource:
- jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/DAPM
+ jdbc-url: jdbc:oracle:thin:@//localhost:1599/DAPM
+# jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/DAPM
# jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/PAPM
driver-class-name: oracle.jdbc.OracleDriver
username: AGWAPP
- password: AGWAPP123!
+ password: elink1234
portal:
auth-virtual-code: 654321
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index b4ab3c5..c595f5a 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -82,6 +82,7 @@
+