본문 바로가기
[ 전자정부프레임워크 ]

전자정부프레임워크 3.10에서 4.2로 마이그레이션

by 히앤님 2024. 7. 4.
반응형
SMALL

1. 호환성 인증용 샘플 제작 및 인증절차 확인

2. eGov 고객용 샘플 제작

 

 

호환성확인을 받은 sw의 연동가이드 문서를 참조하면 인증용 샘플은 앞서 확인한 전자정부프레임워크 기본 샘플에 솔루션을 붙이는 것과 비슷하다. UI의 차이정도만 있을 뿐, 데이터도 그대로 사용하고 CRUD 도 간단하게 연결하면 되어서 큰 문제가 없음.

 

가장 중요한 작업은 사실 상 eGov 고객용 샘플 제작이 메인이다.

기존에 eGov 고객 배포 샘플이 있고, 3.10 버전으로 제작되었다.

어쨌든 가장 좋은 방식은 기존에 작성된 샘플에서 버전만 올려서 사용하는 것인데... 여러가지로 시도해보기로 했다.

 

 

결론) 3.10 -> 4.2 버전으로 마이그레이션하기.

 


▼ 시도1. 붙여넣기(실패)

더보기

pom.xml을 비교해서 따져봐야함.

우선 껍데기는 대충 실행 완료인 것 같고....

음.... 우선 두가지를 만들어보자.

 

1) 3.10 샘플을 그대로 옮겨서 실행해보기!

 

기본 패키지랑 기존이랑 비교해봄

 

1차 시도 : 프로젝트 두개 띄워놓고 그대로 옮겨보기

잘 안들어간다

 

백업을 위해서 workspace 그대로 들어가서 압축파일을 만들어버리면 나중에 프로젝트 import는 압축파일을 package Explorer 에 던져놓기만 하면 된다.

 

기존 dispatcher-servlet.xml 비교해서 붙여넣기

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
                http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <context:component-scan base-package="egovframework">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="webBindingInitializer">
            <bean class="egovframework.example.cmmn.web.EgovBindingInitializer"/>
        </property>
    </bean>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
        <property name="interceptors">
            <list>
                <ref bean="localeChangeInterceptor" />
            </list>
        </property>
    </bean>
    
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
    <!-- 쿠키를 이용한 Locale 이용시 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> -->
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="language" />
    </bean>

    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="cmmn/egovError"/>
        <property name="exceptionMappings">
            <props>
                <prop key="org.springframework.dao.DataAccessException">cmmn/dataAccessFailure</prop>
                <prop key="org.springframework.transaction.TransactionException">cmmn/transactionFailure</prop>
                <prop key="org.egovframe.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
                <prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
            </props>
        </property>
    </bean>

    <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
	    p:viewClass="org.springframework.web.servlet.view.JstlView"
	    p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp"/>

    <!-- For Pagination Tag -->
    <bean id="imageRenderer" class="egovframework.example.cmmn.web.EgovImgPaginationRenderer"/>

    <bean id="paginationManager" class="org.egovframe.rte.ptl.mvc.tags.ui.pagination.DefaultPaginationManager">
        <property name="rendererType">
            <map>
                <entry key="image" value-ref="imageRenderer"/>
            </map>
        </property>
    </bean>
	<!-- /For Pagination Tag -->

    <mvc:view-controller path="/cmmn/validator.do" view-name="cmmn/validator"/>
</beans>

 

 

다행히 주석이 잘 달려있음

<!-- 패키지 내 Controller, Service, Repository 클래스의 auto detect를 위한 mvc 설정 -->
    <context:component-scan base-package="egovframework">

 

 

이건 3.10과 동일하게 주석처리함

    <!-- 서블릿컨네이너상의 exception에 대한 오류 페이지를 연결하는 mvc 설정-->
    <!--
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="cmmn/egovError"/>
        <property name="exceptionMappings">
            <props>
                <prop key="org.springframework.dao.DataAccessException">cmmn/dataAccessFailure</prop>
                <prop key="org.springframework.transaction.TransactionException">cmmn/transactionFailure</prop>
                <prop key="org.egovframe.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
                <prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
            </props>
        </property>
    </bean>
   	-->

 

 

이건 3.10에만 있고 주석처리되어있음

    <!-- 로그인 체크가 필요한 URL과 로그인 여부를 체크해준다 -->
	<!--
	<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/cop/com/*.do"/>
            <mvc:mapping path="/cop/bbs/*Master*.do"/>
            <mvc:mapping path="/uat/uia/*.do"/>
            <mvc:exclude-mapping path="/uat/uia/actionLogin.do"/>
            <mvc:exclude-mapping path="/uat/uia/egovLoginUsr.do"/>
		    <bean class="egovframework.com.cmm.interceptor.AuthenticInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>
     -->

 

이건 3.10에 있음. 4.2에 추가해줌

	<!-- json 관련 설정 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0">
    
    </bean>
    <bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" p:contentType="application/json;charset=UTF-8">
    </bean>
    <!-- json 관련 설정 끝-->

 

 

그 다음 web-inf 아래에 있는 web.xml 비교해서 추가해주기

 

3.10에 이렇게 쓰여있는거 주석만 넣어주기

    <!-- 템플릿 소스에서는 아래의 필터사용 대신 JSP 출력시 <c:out> 태그를 사용하는 것을 기본정책으로 한다  -->
    <!-- egovframework.rte.ptl.mvc.filter.HTMLTagFilter egovframework.com.cmm.filter.HTMLTagFilter-->

 

3.10에 있는 session-timeout 추가해주기

	<session-config>
        <session-timeout>600</session-timeout>
    </session-config>

 

 

나머진 동일함.

 

당연한거겠지만... 구조가 다르고 단순히 3.9 -) 3.10 이수준의 업그레이드가 아니라 메인 버전이 업그레이드 되면서 변경된 부분들이 많았다.

SQL 부분도 문제지만 java 설정값들을 다 맞춘다는게 바보같은 생각이었음...

이쯤 하다가 다른 방법을 찾아보기로 함.

 


 

▼ 시도2. 3.10에서 4.0, 4.0에서 4.1... 한단계씩 올리기

 

좀 더 확인해보니 버전을 한단계씩 올릴 수 있도록 마이그레이션 페이지가 있는것을 확인했다.

https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtemigration4.0

 

egovframework:rtemigration4.0 [eGovFrame]

표준프레임워크 4.0는 Spring Framework 5.3.6 버전을 지원가능하게 업그레이드를 진행하였으나, 전체 오픈소스SW 업그레이드에 따라 일부 변경이 필요합니다. 또한, 각 프로젝트의 상황 및 환경에 따

www.egovframe.go.kr

 

3.10 에서 4.0으로 올리는 것이 가장 복잡하고, 4.0에서 4.1이나 4.1에서 4.2로 올리는 것은 비슷하다.

 

 

사실상 pom.xml 수정만 하는 것 같음.

사실상 크게 바뀐건 두개.

버전 숫자를 변경하는 것과 패키지 명이 egovframework에서 org.egorframe.rte로 변경되었다.

 

표준프레임워크 4.0.0 버전부터 실행환경의 패키지명을 org.egovframe.rte로 변경하였으므로, 실행환경을 import한 소스에 변경된 패키지명을 사용하시기 바랍니다.
표준프레임워크 개발환경에서 Search 기능에서 기존의 패키지명인 egovframework.rte 로 검색한 후,
변경할 패키지명인 org.egovframe.rte로 일괄로 변경하여 사용할 수 있습니다.

 

 

일괄 변경 해보자.

 

 

 

이처럼 실행환경의 패키지명을 전부 search 해서 replace 해주는 작업을 한다.

 

 

또한 4.0에서 4.1, 4.2로 마이그레이션 하는 것도 문서를 보고 동일하게 진행한다.

 

 

 

마지막으로 eclipce 버전이 기존것임을 확인해서 4.2 버전으로 아예 실행파일 자체를 대치해주었다.

3.10 의 이클립스에서는 java compiler가 14까지밖에 안나왔음. 근데 이제 4.2로 덮어써서 워크스페이스를 변경하니까 17까지 뜸. 

jdk 버전도 올려야하는데 3.10 실행환경으로는 17까지 올릴 수가 없음. eclipse 폴더 자체를 4.2 버전으로 덮어쓰기 하니 버전이 잘 올라갔다. 

 

 

17로 변경하고 maven clean 하면 다시 1.8 디폴트로 변경되니 17로 맞춘 뒤 install을 해준다.

 

빌드 성공됨.

반응형
LIST

댓글