No message found under code 'XXX' for locale 'ko'
Spring 프레임워크 또는 전자정부프레임워크를 사용한 프로젝트를 톰캣에 배포하는경우에는 멀쩡히 잘 동작하지만 JBoss EAP / Wildfly 에 배포하면 아래와 같은 오류가 발생하면서 배포가 되지 않는 경우가 있다.
2020-02-21 11:18:16,696 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /WEB-INF/jsp/egovframework/com/cmm/EgovUnitTop.jsp: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'comCmm.top.title' for locale 'ko'. Caused by: javax.servlet.jsp.JspTagException: No message found under code 'comCmm.top.title' for locale 'ko'.
이것은 해당 프레임워크에 있는 국제화 Message 기능이 정상동작하지 않아서 발생하는 문제입니다.
설정파일 내용을 보면 아래와 같습니다.
/WEB-INF/classes/egovframework/spring/com/context-common.xml
<!-- 국제화 Message 설정 --> <bean id="messageSource" class="egovframework.com.cmm.util.EgovWildcardReloadableResourceBundleMessageSource"> <property name="egovBasenames"> <list> <value>classpath*:egovframework/message/com/**/*</value> <value>classpath:/egovframework/rte/fdl/idgnr/messages/idgnr</value> <value>classpath:/egovframework/rte/fdl/property/messages/properties</value> <value>classpath:/egovframework/egovProps/globals</value> </list> </property> <property name="cacheSeconds"> <value>60</value> </property> </bean>
전자정부프레임워크의 xml파일 설정내용을 보면 위와같이 되어있는데 이부분을 수정하여야 합니다.
일단 수정하기 전에 프로젝트소스 내에서 메세지 관련 property 파일들의 위치를 확인합니다.
[root@test7 WEB-INF]# find ./ -name "*.properties" ./classes/egovframework/message/com/uat/uia/message_ko.properties ./classes/egovframework/message/com/uat/uia/message_en.properties ./classes/egovframework/message/com/uat/uap/message_en.properties ./classes/egovframework/message/com/uat/uap/message_ko.properties ./classes/egovframework/message/com/sec/ram/message_en.properties ./classes/egovframework/message/com/sec/ram/message_ko.properties ./classes/egovframework/message/com/cmm/err/message-common_ko.properties ./classes/egovframework/message/com/cmm/err/message-common_en.properties ./classes/egovframework/message/com/cmm/message-common_ko.properties ./classes/egovframework/message/com/cmm/message-common_en.properties ./classes/egovframework/message/com/message-common_en.properties ./classes/egovframework/message/com/message-common_ko.properties
이와 같이 메세지 관련 property 파일의 위치를 확인하면 해당 경로를 모두 등록해줘야 합니다.
<bean id="messageSource" class="egovframework.com.cmm.util.EgovWildcardReloadableResourceBundleMessageSource"> <property name="egovBasenames"> <list> <value>classpath*:egovframework/message/com/**/*</value> <value>classpath:/egovframework/rte/fdl/idgnr/messages/idgnr</value> <value>classpath:/egovframework/rte/fdl/property/messages/properties</value> <value>classpath:/egovframework/egovProps/globals</value> <!-- 확인된 모든 경로를 추가해준다 --> <value>classpath:/egovframework/message/com/message-common</value> <value>classpath:/egovframework/message/com/cmm/message-common</value> <value>classpath:/egovframework/message/com/cmm/err/message-common</value> <value>classpath:/egovframework/message/com/sec/ram/message</value> <value>classpath:/egovframework/message/com/uat/uap/message</value> <value>classpath:/egovframework/message/com/uat/uia/message</value> </list> </property> <property name="cacheSeconds"> <value>60</value> </property> </bean>
아마도 원인은 classpath*:egovframework/message/com/**/*
부분이 와일드카드로 모두 읽어들이지 못하는 문제가 있는것으로 보인다.
참조링크
로그인하면 댓글을 남길 수 있습니다.