전자정부표준프레임워크

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

무한열정 2018. 8. 2. 21:39


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

공통컴포넌트 3.7의 미개선 251종을 실행하였는데

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


java라는 플랫폼이 OS의 특성을 타지 않는다는데 어찌 않될까?

처음엔 의아했는데

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


* EgovUserDetailsHelper쪽에서 에러가 난다? 인증쪽인데 null이 떨어질리 없는데? 의아한 로그가 찍힌다.

2018-08-02 20:30:15,677 ERROR [egovframework.com.cmm.EgovComExcepHndlr] egovframework.com.sym.bat.service.impl.EgovBatchSchdulServiceImpl.selectBatchSchdulList

java.lang.NullPointerException: null

at egovframework.com.cmm.util.EgovUserDetailsHelper.isAuthenticated(EgovUserDetailsHelper.java:59) ~[classes/:?]

at egovframework.com.sym.log.lgm.service.EgovSysLogAspect.logSelect(EgovSysLogAspect.java:216) ~[classes/:?]

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]

at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]


* batchScheduler 빈이 초기화가 실패라니? ㅜㅠ 이상하네

2018-08-02 20:30:15,726 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed

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

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]



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

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


다음 web.xml 파일의 정보를 수정한다.

/src/main/webapp/WEB-INF/web.xml

* 변경전

<context-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>classpath*:egovframework/spring/com/** /context-*.xml</param-value>

</context-param>


* 변경후

<context-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>classpath*:egovframework/spring/com/context-*.xml,classpath*:egovframework/spring/com/*/** /context-*.xml</param-value>

</context-param>


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

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

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

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