티스토리 뷰

[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 배포 관련
 

[Spring Boot] 외부 WAS용 War 배포 (JEUS 8)

스프링 부트에서 내장된 tomcat이 아닌 외부 톰캣이나 기타 WAS를 이용하여 서비스를 하려면 프로젝트를 war로 배포해야 합니다. 배포 방법은 간단 합니다. 오늘은 몇일 전에 설치한 JEUS에 배포를

copycoding.tistory.com

 

 

 

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를 찾을수 있음

 

[Spring] classpath: vs classpath*:

spring classpath: vs classpath*: 이슈 Invalid bound statement (not found) 웹 어플리케이션을 리팩토링하고, 모듈 별로 분리하는 작업을 하는 과정에서 mapperLocations 에 설정된 mapper xml 을 읽지 못하고 Exception 을

pplenty.tistory.com

 

 

 

 

OKKY - 소스가 tomcat7 에서는 실행이 되는데 jeus7 에서 안되는 문제 ;;

안녕하세요 현재 사업 진행하다가 마무리 단계에서운영서버가 jeus7 이므로 배포 테스트 중에 이상한 문제에 봉착했습니다. 환경은jdk 1.7, spring 4.2, mybatis 3.3  등등을 이용하여 개발중입니다. 현

okky.kr

 

 

U.STRA Framework Guide : Framework 2 - Java / 데이터 / 마이바티스 / Mapper Location 제외

 

guide.ustraframework.kro.kr

 

 

이상 정리 끝~!

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함