전자정부표준프레임워크

macOS에서 전자정부 표준프레임워크 공통컴포넌트(v3.7 50종 신버전) 오류 날때 구동하는 방법

무한열정 2018. 8. 7. 12:08

전자정부 표준프레임워크에서 제공하는

공통컴포넌트 3.7의 신규 개선 50종을 실행하였는데

맥OS에서 오류가 발생하였다.

 

java라는 플랫폼이 OS의 종류에 상관없이 실행되어야 맞는데 

외 그럴까? 

공통컴포넌트가 OS에 의존적인부분은 없을텐데 의아했다.

테스트 하면서 Bean의 구동 초기화 순서에 따라 오류가 날수 있다는걸 알게되었다.

 

* 설정은 모두 정상이나 batchScheduler부분에서 오류가 나는게 확인된다. ㅜㅠ

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batchScheduler' defined in file [/EGOV/eclipse-jee-neon/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/egovframework-all-in-one-AllNew/WEB-INF/classes/egovframework/spring/com/scheduling/context-scheduling-sym-bat.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException

 

 

결론적으로 다음경로의 빈설정이 먼저 초기화 되어야 한다.

 

classpath*:egovframework/spring/com/context-*.xml

그외에 빈들은 나중에 초기화 되는 전략을 시도한다.

 

다음 WebApplicationInitializer 파일의 정보를 수정한다.

src/main/java/egovframework/com/cmm/config/EgovWebApplicationInitializer.java

 

* 변경전

XmlWebApplicationContext rootContext = new XmlWebApplicationContext();

rootContext.setConfigLocations(new String[] { "classpath*:egovframework/spring/com/**/context-*.xml" });

rootContext.refresh();

rootContext.start();

 

* 변경후

XmlWebApplicationContext rootContext = new XmlWebApplicationContext();

rootContext.setConfigLocations(new String[] { "classpath*:egovframework/spring/com/context-*.xml","classpath*:egovframework/spring/com/*/context-*.xml" });

rootContext.refresh();

rootContext.start();

 

정상적으로 기동이 되었다.

참고로 공통컴포넌트 V3.7 신규 50종은 맥OS에서 정상적으로 구동이 되었다.

* 들리는 얘기로는 이런 초기 구동 오류 증상은 OpenJDK를 사용할때도 발생할때가 있다고 한다.

   그리고 맥OS의 Java Version은 1.8이며 Oracle JDK를 사용하였다.