|
|
|
|
@ -34,7 +34,7 @@ Client → VehicleInterfaceController
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 2. **External Mode** (외부 REST API 호출)
|
|
|
|
|
- 별도로 실행 중인 VMIS-interface 서버의 REST API를 호출
|
|
|
|
|
- 별도로 실행 중인 VIPS 서버의 REST API를 호출
|
|
|
|
|
- 서비스 분리를 통한 확장성 및 유지보수성 향상
|
|
|
|
|
- MSA(Microservices Architecture) 환경에 적합
|
|
|
|
|
|
|
|
|
|
@ -42,7 +42,7 @@ Client → VehicleInterfaceController
|
|
|
|
|
Client → VehicleInterfaceController
|
|
|
|
|
→ ExternalVehicleInfoServiceImpl
|
|
|
|
|
→ ExternalVehicleApiServiceImpl (RestTemplate)
|
|
|
|
|
→ VMIS-interface 서버 (별도 실행)
|
|
|
|
|
→ VIPS 서버 (별도 실행)
|
|
|
|
|
→ 정부 VMIS API
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
@ -168,7 +168,7 @@ public class VmisIntegrationConfig {
|
|
|
|
|
#### 모드 전환 시 주의사항
|
|
|
|
|
|
|
|
|
|
**Internal → External 전환 시:**
|
|
|
|
|
1. 외부 VMIS-interface 서버가 실행 중이어야 함
|
|
|
|
|
1. 외부 VIPS 서버가 실행 중이어야 함
|
|
|
|
|
2. `vmis.external.api.url.base` 설정 필요
|
|
|
|
|
3. 네트워크 방화벽 설정 확인
|
|
|
|
|
4. GPKI 암호화는 외부 서버에서 처리됨
|
|
|
|
|
@ -478,6 +478,152 @@ server:
|
|
|
|
|
port: 8080
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 방법 2: JAR 파일 실행 (배포 권장)
|
|
|
|
|
|
|
|
|
|
**개발 환경**
|
|
|
|
|
```bash
|
|
|
|
|
# Linux/Mac
|
|
|
|
|
java -Dspring.profiles.active=dev -jar build/libs/VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
# Windows PowerShell
|
|
|
|
|
java -Dspring.profiles.active=dev -jar build/libs/VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
# 또는 환경변수 사용 (Windows PowerShell)
|
|
|
|
|
$env:SPRING_PROFILES_ACTIVE = "dev"
|
|
|
|
|
java -jar build/libs/VIPS-BOOT.war
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**운영 환경 (환경변수 포함)**
|
|
|
|
|
```bash
|
|
|
|
|
# Linux/Mac
|
|
|
|
|
export SPRING_PROFILES_ACTIVE=prd
|
|
|
|
|
export VMIS_SYSTEM_INFO_SYS_ID="41-345"
|
|
|
|
|
export VMIS_SYSTEM_SIGUNGU_CODE="41460"
|
|
|
|
|
java -jar build/libs/VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
# Windows PowerShell
|
|
|
|
|
$env:SPRING_PROFILES_ACTIVE = "prd"
|
|
|
|
|
$env:VMIS_SYSTEM_INFO_SYS_ID = "41-345"
|
|
|
|
|
$env:VMIS_SYSTEM_SIGUNGU_CODE = "41460"
|
|
|
|
|
java -jar build/libs/VIPS-BOOT.war
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 백그라운드 실행 (Linux 서버)
|
|
|
|
|
```bash
|
|
|
|
|
# nohup 사용 (기본 java 경로, 콘솔 출력을 app.log에 저장)
|
|
|
|
|
nohup java -Dspring.profiles.active=prd -jar build/libs/VIPS-BOOT.war > app.log 2>&1 &
|
|
|
|
|
|
|
|
|
|
# Java 경로를 직접 지정하는 방법 (Java 17 이상)
|
|
|
|
|
nohup /usr/bin/java -Dspring.profiles.active=prd -jar build/libs/VIPS-BOOT.war > app.log 2>&1 &
|
|
|
|
|
|
|
|
|
|
# 또는 사용자 지정 Java 경로 사용
|
|
|
|
|
nohup /opt/jdk-17/bin/java -Dspring.profiles.active=prd -jar build/libs/VIPS-BOOT.war > app.log 2>&1 &
|
|
|
|
|
|
|
|
|
|
# 콘솔 출력을 남기지 않을 때 (애플리케이션 자체 로그는 logback-spring.xml 설정에 따라 별도 저장됨)
|
|
|
|
|
# 개발 환경
|
|
|
|
|
nohup /usr/bin/java -Dspring.profiles.active=dev -jar build/libs/VIPS-BOOT.war > /dev/null 2>&1 &
|
|
|
|
|
|
|
|
|
|
# 운영 환경 (애플리케이션 로그: d:/data/VIPS/logs/vips.log)
|
|
|
|
|
nohup /usr/bin/java -Dspring.profiles.active=prd -jar build/libs/VIPS-BOOT.war > /dev/null 2>&1 &
|
|
|
|
|
|
|
|
|
|
# Java 경로 확인 방법
|
|
|
|
|
which java
|
|
|
|
|
# 또는
|
|
|
|
|
readlink -f $(which java)
|
|
|
|
|
|
|
|
|
|
# 프로세스 확인
|
|
|
|
|
ps aux | grep VIPS
|
|
|
|
|
|
|
|
|
|
# 종료
|
|
|
|
|
kill -9 <PID>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**참고:** `/dev/null` 사용 시 콘솔 출력만 버려지며, 애플리케이션 자체 로그는 `logging.file.path` 설정에 따라 정상적으로 기록됩니다.
|
|
|
|
|
- 개발: `d:/data/VIPS/logs/vips.log`
|
|
|
|
|
- 운영: `d:/data/VIPS/logs/vips.log`
|
|
|
|
|
|
|
|
|
|
#### 백그라운드 실행 (Windows 서버)
|
|
|
|
|
|
|
|
|
|
**PowerShell - 백그라운드 프로세스로 실행**
|
|
|
|
|
```powershell
|
|
|
|
|
# 개발 환경 (콘솔 출력을 app.log에 저장)
|
|
|
|
|
Start-Process -NoNewWindow -FilePath "java" -ArgumentList "-Dspring.profiles.active=dev","-jar","build\libs\VIPS-BOOT.war" -RedirectStandardOutput "app.log" -RedirectStandardError "app.log"
|
|
|
|
|
|
|
|
|
|
# 운영 환경 (콘솔 출력을 app.log에 저장)
|
|
|
|
|
Start-Process -NoNewWindow -FilePath "java" -ArgumentList "-Dspring.profiles.active=prd","-jar","build\libs\VIPS-BOOT.war" -RedirectStandardOutput "app.log" -RedirectStandardError "app.log"
|
|
|
|
|
|
|
|
|
|
# Java 경로를 직접 지정하는 방법
|
|
|
|
|
Start-Process -NoNewWindow -FilePath "D:\DEV\.jdks\jdk1.8.0_271\bin\java.exe" -ArgumentList "-Dspring.profiles.active=prd","-jar","build\libs\VIPS-BOOT.war" -RedirectStandardOutput "app.log" -RedirectStandardError "app.log"
|
|
|
|
|
|
|
|
|
|
# 콘솔 출력을 남기지 않을 때 (NUL로 리다이렉트)
|
|
|
|
|
Start-Process -NoNewWindow -FilePath "java" -ArgumentList "-Dspring.profiles.active=prd","-jar","build\libs\VIPS-BOOT.war" -RedirectStandardOutput "NUL" -RedirectStandardError "NUL"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**CMD - javaw 사용 (콘솔 창 없이 실행)**
|
|
|
|
|
```cmd
|
|
|
|
|
# 개발 환경
|
|
|
|
|
start /B javaw -Dspring.profiles.active=dev -jar build\libs\VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
# 운영 환경
|
|
|
|
|
start /B javaw -Dspring.profiles.active=prd -jar build\libs\VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
# Java 경로를 직접 지정 (경로에 공백이 있을 경우 빈 창제목 "" 필요)
|
|
|
|
|
start "" /B "D:\DEV\.jdks\jdk1.8.0_271\bin\javaw.exe" -Dspring.profiles.active=prd -jar build\libs\VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
# 또는 절대 경로 사용
|
|
|
|
|
start "" /B "D:\DEV\.jdks\jdk1.8.0_271\bin\javaw.exe" -Dspring.profiles.active=prd -jar D:\workspace\git\VIPS\build\libs\VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cd /d d:
|
|
|
|
|
D:\VIPS\azul-17.0.14\bin
|
|
|
|
|
|
|
|
|
|
java -Dspring.profiles.active=prd -jar D:\VIPS\VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
"D:\VIPS\azul-17.0.14\bin\javaw.exe" -Dspring.profiles.active=prd -jar D:\VIPS\VIPS-BOOT.war
|
|
|
|
|
|
|
|
|
|
start "" /B "D:\VIPS\azul-17.0.14\bin\javaw.exe" -Dspring.profiles.active=prd -jar D:\VIPS\VIPS-BOOT.war
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**참고:** `start` 명령어는 첫 번째 따옴표 문자열을 창 제목으로 인식하므로, 경로를 따옴표로 묶을 때는 앞에 빈 창제목 `""`을 추가해야 합니다.
|
|
|
|
|
|
|
|
|
|
**프로세스 관리**
|
|
|
|
|
```powershell
|
|
|
|
|
# 프로세스 확인
|
|
|
|
|
Get-Process | Where-Object {$_.ProcessName -like "*java*"} | Select-Object Id, ProcessName, Path
|
|
|
|
|
|
|
|
|
|
# 또는 특정 포트로 확인
|
|
|
|
|
netstat -ano | findstr :18080
|
|
|
|
|
|
|
|
|
|
# 프로세스 종료 (PID로)
|
|
|
|
|
Stop-Process -Id <PID> -Force
|
|
|
|
|
|
|
|
|
|
# 또는 taskkill 사용
|
|
|
|
|
taskkill /F /PID <PID>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Java 경로 확인 (Windows)**
|
|
|
|
|
```powershell
|
|
|
|
|
# PowerShell
|
|
|
|
|
where.exe java
|
|
|
|
|
|
|
|
|
|
# 또는
|
|
|
|
|
(Get-Command java).Source
|
|
|
|
|
|
|
|
|
|
# Java 버전 확인
|
|
|
|
|
java -version
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**참고:** Windows 환경에서도 콘솔 출력을 `NUL`로 리다이렉트하면, 애플리케이션 자체 로그는 `d:/data/VIPS/logs/vips.log`에 정상적으로 기록됩니다.
|
|
|
|
|
|
|
|
|
|
### 4) API 문서(Swagger UI)
|
|
|
|
|
- 개발 환경: `http://localhost:8080/swagger-ui/index.html`
|
|
|
|
|
- 운영 환경: `http://localhost:18080/swagger-ui/index.html`
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Swagger API 문서
|
|
|
|
|
@ -581,15 +727,6 @@ vmis:
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 참고 문서
|
|
|
|
|
|
|
|
|
|
프로젝트 루트에 다음 상세 문서들이 있습니다:
|
|
|
|
|
|
|
|
|
|
- `VMIS_INTEGRATION_COMPLETE.md`: VMIS 통합 완료 보고서
|
|
|
|
|
- `VMIS_INTEGRATION_STRATEGY_DESIGN.md`: 통합 전략 설계 문서
|
|
|
|
|
- `VMIS_INTERFACE_INTEGRATION_ANALYSIS.md`: 인터페이스 통합 분석
|
|
|
|
|
- `VMIS_INTERFACE_MIGRATION_PLAN.md`: 마이그레이션 계획
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 라이선스
|
|
|
|
|
|