티스토리 뷰
[JEUS] 애플리케이션 설정 및 개발 시 문제점 정리
지난달부터 보험사에서 인프라 SM 업무를 시작했음.
OJT 느낌?!으로 서버에서 WAS(JEUS)와 DBMS, Webserver 설치 및 Application 띄우는 거까지 진행 중임.
※ 아키텍처 구성
서버 : Linux(폐쇄망)
WAS : JEUS(TmaxSoft) 8.0
Application : Spring boot(2.7.5) + thymeleaf + Mybatis(3.x)
DBMS : Mysql 8.0
Webserver : WebtoB
※ 기타 개발 환경
- Application에서 직접 DB에 접근하지 않고, Jeus에 Datasource를 등록 후 JNDI 설정을 통해 DB 접근하도록 구성
- Spring boot는 Spring initilizr를 통해 설정했음.(Java 8, war, maven 및 기타 dependency 가져다가 추가함)
- IDE는 Intellij로 로컬에서 개발 후 FTP를 통해 Linux 서버로 옮겨 개발함(폐쇄망이라 어쩔 수 없음)
※ 참고 블로그
- JEUS 배포 관련
1. 애플리케이션 간단 요약
간단히 MVC 모델 기반으로 브라우저에서 도메인 접속하면 DB 정보를 보여주는 형태로 만들었음
사진으로 추가해서 보여주고 싶긴 하나 회사에서 만든 거라 사진이나 파일 외부로 가져올 수 없음
2. 개발과정 중 발생한 이벤트
1) Spring boot에서 run 후 애플리케이션이 바로 종료되는 현상 :
dependency에서 tomcat관련 설정을 없애야 함 → 내장 tomcat 하고 충돌 나서 그럼
2) JNDI(Java Naming and Directory Interface) :
Application에서 매번 DB source 설정을 해줬었는데 이게 application에서 직접 DB접근하는 형태인 걸 배움.
기업은 운영과 개발 서버가 분리되어 있는데 매번 개발에서 운영 올릴 때 DB 설정을 바꿔야 하는 것과
Application에서 매번 클라이언트에서 호출할 때마다 DB 접근 시 Connection pool을 생성하고 없애는 과정에서 메모리가 소모가 많고, 속도도 느린 문제점이 있음.
그래서 WAS에 Connection pool 설정 후 Database source를 등록해 WAS에서 Connection pool을 유지하고 필요하면 사용 반납하는 형태로 아키텍처를 구성함.
이때 Database source 등록 시 JNDI를 export 설정을 함. 이때 export name을 application의 datasource에 등록해 주면 DB 연결이 완료됨.(이 개념 첨 듣고 너무 신기했음)
3) org.apache.juli.logging.logfactory classnotfoundexception
이거는 logfactory 관련 jar 파일이 없어서 그런 줄 알았는데, dependency에서 tomcat 부분 주석처리를 해서 jar파일이 없던 거였음.
4) Mybatis invalid bound statement(not found) 에러
개발환경에서는 문제없이 애플리케이션이 구동되는데 WAS에 올리고 나서 invalid bound statement(not found) 에러가 계속 발생함.
구글링으로 해결방법을 찾아봤는데 대부분 mybatis name space 오타이거나 datasource에서 mapper 경로 설정을 잘못한 거라고 하는데 여러 번 확인해도 아무 문제가 없었음.
그러다 아래 사이트에서 해결방법이 있길래 한번 똑같이 적용해 봤는데 해결됐음.
간단히 정리하면 tomcat에서는 classpath: 이렇게 해주면 되는데 JEUS에서는 classpath*: 이렇게 해줘야 함.
설정 파일로 보여주자면 아래처럼 바꿔주면 됨.
mybatis.mapper-locations: classpath:/mapper/**/*.xml
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
mybatis.mapper-locations: classpath:/mapper/**/*.xml,classpath*:/sysmapper/**/*.xml
이유는 아래와 같다는데 Management 관련 라이브러리가 JEUS에 참조되어 있다는 얘기인 거 같은데 더 알아봐야 할 듯...
프레임워크에서는 Management 관련 라이브러리가 참조되어 있을 경우, "classpath*:/sysmapper/**/*.xml" 속성을 mybatis.mapper-locations 프로퍼티에 추가하여 시스템 기능의 mapper를 추가 등록
아래 내용을 더 찾아보다가 아래 블로그에서 관련 내용 찾음
개발환경에서는 빌드 전에 mapper.xml을 찾는데 war로 빌드한 이후에는 해당 path를 못찾아서 나는 에러 인듯.
그래서 classpath*를 사용해야 jar 파일의 classpath를 찾을수 있음
이상 정리 끝~!
'Architecture > WAS' 카테고리의 다른 글
[Tomcat] catalina.out 날짜별 분기 작업(feat. rotatelog) (0) | 2024.02.27 |
---|---|
[JEUS] The server shutdown failed and a timeout occurred. shutdown timeout[120000 ms] 원인 분석과 해결방안 (1) | 2024.01.01 |
JEUS 7 이상(Incl. webtob) 점검 SCRIPT (0) | 2023.11.16 |
JEUS6이하 점검 SCRIPT (0) | 2023.11.16 |
Websphere(Incl. IHS) 점검 script (0) | 2023.11.16 |
- Total
- Today
- Yesterday
- BufferedWriter
- 재기동
- 나만의챗봇
- 유데미
- script
- 코딩테스트
- 취리코
- 코드트리
- JWT
- 자바
- 회고록
- 취업리부트코스
- dxdy
- Java
- 전자정부프레임워크
- Spring
- NLU
- 백준
- Comparator
- springboot
- RASA
- 글또
- Comparable
- 개발자취준
- 챗봇
- 항해99
- BFS
- 객체정렬
- thymeleaf
- BufferedReader
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |