이미 로컬, ec2 에서 정상작동 하던 서버가
도커 컨테이너에서 톡정 페이지만 문제가 발생하는 현상을 발견했다
만든지 오래된 코드며 대부분의 문제는 다 찾은 줄 알았는데
구동 환경에 따라 로컬라이징이 필요 하다는것을 알게 되었다
이번 문제로그의 전문은 맨 하단에 있다
봐야 할 부분은 다음과 같다
2026-01-14T06:37:56.369Z ERROR 1 --- [nio-8080-exec-6] org.thymeleaf.TemplateEngine
: [THYMELEAF][http-nio-8080-exec-6] Exception processing template "user/userJoin":
Error resolving template [user/userJoin],
template might not exist or might not be accessible by any of the configured Template Resolvers
해당 부분은 당연히 이전에 정상작동 하던 페이지 요청 파트다
오래된 코드는 오래된 버전에 대응 되었기 때문에
이 페이지가 최신 thymeleaf를 끌어오지 못하는 것이라 추측했지만thymeleaf의 버전이 기입되어 그대로 가져오고 있었다
thymeleaf가 해당 정보를 받아오지 못하는 것이라는 두번째 추측을 했다
thymeleaf 가 탬플릿 루트에서 /user/userjoin.html을 찾지 못하기 때문인데
그 이유는 대소문자 였다

return의 모든 대문자를 수정 했다

해당 문제의 원인은 찾았지만 그 원인은 알지 못했다
이러한 오류는 많은사람들이 겪었으며 그들도 로컬과 대상환경의 차이로 인해 문제를 겪었고
그 원인 추측은 원도우에서의 대소문자 무시로 인해 경로가 찾아지며
리눅스 환경에서는 찾지 못한다
라고 공통된 추측을 한다
나의경우 클라우드 리눅스 환경에서도 동작했다
이 서버는 우분투24, 센토스, 아마존리눅스 에서 동작했었고
윈도우10,11 에서 모두 정상이었으며
도커의 컨테이너에서 문제가 발생 했다
가상환경의 디랙토리 분활 문제일까 > 독립 환경이어도 찾는 프로세스는 자기 os를 따라감
에초에 jvm에서 돌아갈 탠데 왜 환경의 영향을 받을까 > jvm이 돌아가도 자원은 os가 찾아주겠지
나는 이것을 명확히 하고싶었다
https://learn.microsoft.com/ko-kr/windows/wsl/case-sensitivity 여기서 대소문자 허용여부를 변경 할 수 있다고 한다
대/소문자 구분
Windows 및 Linux 파일 시스템 간에 대/소문자를 구분하는 파일 이름을 처리하는 방법, WSL을 사용하여 디렉터리별로 이러한 설정을 조정하는 방법 및 문제를 해결하는 방법을 알아봅니다.
learn.microsoft.com
사용할 수 있는지 없는지 확인

결론적으로 이건 파일시스템에서 허용설정을 변경하는거고 jvm리소스탐색에 관여할 수 없었다

빌드된 jar에서 뽑아낸 따끈따끈한 파일명을 체크한다
아 난 모르겠다
2026-01-14T06:37:56.369Z ERROR 1 --- [nio-8080-exec-6] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-6] Exception processing template "user/userJoin": Error resolving template [user/userJoin], template might not exist or might not be accessible by any of the configured Template Resolvers
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [user/userJoin], template might not exist or might not be accessible by any of the configured Template Resolvers
at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]
at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]
at org.thymeleaf.spring6.view.ThymeleafView.renderFragment(ThymeleafView.java:372) ~[thymeleaf-spring6-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]
at org.thymeleaf.spring6.view.ThymeleafView.render(ThymeleafView.java:192) ~[thymeleaf-spring6-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1415) ~[spring-webmvc-6.0.12.jar!/:6.0.12]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1159) ~[spring-webmvc-6.0.12.jar!/:6.0.12]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1098) ~[spring-webmvc-6.0.12.jar!/:6.0.12]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.12.jar!/:6.0.12]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.12.jar!/:6.0.12]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.12.jar!/:6.0.12]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.12.jar!/:6.0.12]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.13.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.12.jar!/:6.0.12]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.12.jar!/:6.0.12]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.12.jar!/:6.0.12]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.12.jar!/:6.0.12]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.12.jar!/:6.0.12]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.12.jar!/:6.0.12]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.13.jar!/:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.13.jar!/:na]
참고
https://greathyeon.tistory.com/34
[Spring Boot] thymeleaf 에러 : org.thymeleaf.exceptions.TemplateInputException
로컬에서는 잘 되던 코드가 aws에 올리고 나니 에러를 일으켰다.그야말로 어...? 아까는 됐는데 상황이다.바로 putty 에서 에러 로그를 살펴봤습니다. Exception processing template "pages/myPage/indexMypage
greathyeon.tistory.com
'마구니 패치 노트' 카테고리의 다른 글
| 도커 프로필설정 적용 안되는 문제 해결 기록 (0) | 2026.01.19 |
|---|---|
| 서버 해킹 대응 (0) | 2024.06.01 |
| OCI 리눅스 장애(비정상 정지) 원인 기록,결론 (1) | 2024.03.05 |
| 비밀번호 해싱MD5 > sha256 문제 해결 (0) | 2023.05.19 |
| 서버타임 동기화 (0) | 2023.05.06 |
댓글