# 시작하기
***
세외수입개별시스템(Non-Tax Revenue Individual System) 은 \
과태료 부과에 대한 실시간 API 4종(부과결과/부과취소/수납정보/감액정보)을 지원 하며, \
API 4종의 데이터는 세외수입시스템측에서 제공 한다.
* 출발지: 세외수입시스템
* 목적지: 개별시스템(ntri)
### 버전관리
| 버전 |작성일|작성자|내용|
|---|---|---|---|
| v0.1 |2022.12.20|박민규|최초작성|
| v0.2 |2022.12.21|박민규|"2. SSL 인증서 발급" 내용 수정( 발급방식 변경: 스크립트 -> 실행파일(.bat) )|
| v0.2 |2022.12.21|박민규|%NTRI_APP_HOME%/bin/setenv.bat 파일의 "DB/SSL설정" 수정 및 VM옵션" 환경변수 추가|
| v0.3 |2022.12.22|박민규|연계표준지침(v1.2.1) 전문구조 변경에 의한 "API 테스트" 데이터 수정(%NTRI_APP_HOME%/bin/test/*.json)|
| v0.3.1 |2022.12.23|박민규|"1. 배포하기"에 NTRI_JAVA_HOME 설정에 대한 내용 추가 및 실행 환경 JDBC 내용추가|
| v0.3.2 |2022.12.27|박민규|"부록-실행 환경"의 JDBC 수정(ojdbc8.jar -> ojdbc6.jar). 사유: 일부 서버에서 Java.sql.SQLRecoverableException 발생|
| v0.3.3 |2022.12.27|박민규|문서내용 수정. "부록-실행 환경" `삭제`. "부록-구현 스펙" `추가`|
| v0.4 |2022.12.27|박민규|연계표준지침(v1.2.1 -> v1.?.?) 전문구조 변경에 의한 "API 테스트" 데이터 수정(%NTRI_APP_HOME%/bin/test/*.json). reqVo 필드타입 수정(단건 -> 다건)|
| v0.4.1 |2022.12.29|박민규|curl프로그램 변경 및 프로그램 위치 변경(%NTRI_APP_HOME% -> %NTRI_APP_HOME%/bin/test). "부록-디렉토리 구성"에서 내용 삭제|
| v1.0 |2023.01.02|박민규|연계대상코드(linkTrgtCd) 설정 추가. (어플리케이션 수정 및 setenv.bat 환경변수 NTRI_APP_LINKTRGTCD 추가)|
## 1. 배포하기
1. **원하는 경로에 ntri.zip 압축파일을 unzip** 한다.
* [원하는 경로]/ntri -> **%NTRI_APP_HOME%**
2. *%NTRI_APP_HOME%/bin/setenv.bat* 파일을 열어 **배포환경에 맞게 환경변수를 수정** 한다.
* NTRI_JAVA_HOME 및 SSL/DB 설정 등..
**\[ NTRI_JAVA_HOME 설정 참고 \]**
* PC에 JDK가 설치(install)된 경우
* JDK버전이 11 이상이면 -> %JAVA_HOME% 작성
* JDK버전이 11 미만이면 -> [JDK11(Amazon Corretto) 다운로드(.zip)](https://docs.aws.amazon.com/ko_kr/corretto/latest/corretto-11-ug/downloads-list.html) 및 Unzip 한 path 작성
* PC에 JDK가 미설치(no install)된 경우(unzip 또는 install 中 택1)
* [JDK11(Amazon Corretto) 다운로드(.zip)](https://docs.aws.amazon.com/ko_kr/corretto/latest/corretto-11-ug/downloads-list.html) 및 Unzip 한 path 작성
* [JDK11(Amazon Corretto) 다운로드(.msi)](https://docs.aws.amazon.com/ko_kr/corretto/latest/corretto-11-ug/downloads-list.html) 및 Install 후 %JAVA_HOME% 작성
※JDK 설치 확인 방법: cmd 창에서 `java -version` 입력
※JAVA_HOME 설정 확인 방법: 시스템 -> 정보 -> 고급 시스템 설정 -> 환경 변수(N)... -> 시스템 변수(S)
3. *%NTRI_APP_HOME%/bin/service-regist.bat* 파일을 **"관리자권한" 으로 실행**
4. *%NTRI_APP_HOME%/webapp* 디렉토리에 **"ntri-0.0.1-SNAPSHOT.jar" 파일 복사**
5. *%NTRI_APP_HOME%/bin/service-start.bat* 파일을 실행하여 "서비스 시작"
* 서비스 실행 오류가 발생할 경우 *%NTRI_APP_HOME%/logs/stderr.log* 내용 확인
6. *%NTRI_APP_HOME%/bin/service-logprint.bat* 파일을 실행하여 "서비스 실시간 로그" 확인
## 2. SSL 인증서 발급
1. [OpenSSL 다운로드](https://sourceforge.net/projects/openssl)
* openssl-1.0.2j-fips-x86_64/openssl-1.0.2j-fips-x86_64.zip
2. 다운로드한 압축파일을 unzip 후 **OpenSSL 디렉토리를 C드라이브(C:/) 밑으로 복사**
3. *%NTRI_APP_HOME%/ssl/bin* 디렉토리의 **"generate-ssl-cert-new.bat" 파일 실행**
**\[ 파일 설명 \]**
* 신규 발급: *generate-ssl-cert-new.bat*
* 인증서파일 `모두` 발급(key, csr, crt)
* 재발급: *generate-ssl-cert-refresh.bat*
* 인증서파일 `일부`만 발급(csr, crt)
4. *%NTRI_APP_HOME%/ssl/cert* 디렉토리에 **인증서파일(key,csr,crt) 이 생성**되었는지 **확인**
## 3. API 테스트
1. **"~/bin/test"** 디렉토리로 이동
2. 테스트 배치파일(.bat) 실행하여 API 호출
* 일괄: *curl-all.bat*
* 부과취소: *curl-LevyCancel.bat*
* 부과결과: *curl-LevyResult.bat*
* 수납정보: *curl-RcivInfo.bat*
* 감액정보: *curl-RdcamtInfo.bat*
# 부록
***
### 디렉토리 구성
|Directory|Description|
|---|---|
|%NTRI_APP_HOME%/webapp|어플리케이션 jar 파일이 위치한 디렉토리|
|%NTRI_APP_HOME%/bin|서버기동과 관련한 배치파일(.bat)이 위치한 디렉토리|
|%NTRI_APP_HOME%/bin/test|API 테스트 배치파일(.bat)이 위치한 디렉토리|
|%NTRI_APP_HOME%/bin/logs|어플리케이션 로그파일(.log)이 저장되는 디렉토리(startup.bat 직접 호출 시)|
|%NTRI_APP_HOME%/logs|어플리케이션 로그파일(.log)이 저장되는 디렉토리(윈도우 서비스 사용 시)|
|%NTRI_APP_HOME%/ssl/bin|SSL 인증서 신규/재발급을 위한 배치파일(.bat)이 위치한 디렉토리|
|%NTRI_APP_HOME%/ssl/cert|발급된 SSL 인증서가 저장되는 디렉토리|
|%NTRI_APP_HOME%/ssl/cert/backup|SSL 인증서 신규/재발급 시마다 발급된 인증서가 백업되는 디렉토리|
### 파일 설명
|File Name|Description|
|---|---|
|setenv.bat|`환경변수` 설정|
|service-regist.bat|서비스 `등록`|
|service-edit.bat|등록한 서비스정보 `수정`|
|service-delete.bat|등록한 서비스 `삭제`|
|service-start.bat|등록한 서비스 `실행`|
|service-stop.bat|등록한 서비스 `중지`|
|service-status.bat|등록한 서비스 실행 `상태` 확인|
|service-logprint.bat|등록한 서비스 `실시간 로그` 출력|
|startup.bat|서버 `기동`|
|shutdown.bat|서버 `종료`|
|logprint.bat|`실시간 로그` 출력|
### 구현 스펙
+ Back-End
+ SpringBoot 2.7.5
+ Tomcat 9.0.68
+ JDK11
+ gradle
+ JPA
+ DB
+ Oracle 11g
+ mariaDB 10.6.5
+ mysql
+ JDBC Libray
+ ojdbc6.jar
+ mariadb-java-client-2.7.5.jar
+ mysql-connector-java-8.0.30.jar